文章目录
- 1 1.SSH基本概述
- 1.1 1.SSH远程服务主要功能
- 1.2 2.远程连接方式有哪些
- 1.3 3.SSH远程连接与Telnet远程连接区别
- 1.4 4.安装telnet服务,然后使用root登录测试
- 1.5 5.使用xshell的新建标签,输入如下指令[登录不上]
- 1.6 6.创建一个普通用户,再次使用telnet登录测试
- 1.7 7.SSH远程故障连接
- 1.8 2.SSH相关命令
- 1.9 2.ssh远程登录服务器命令
- 1.10 3.scp复制数据至远程主机命令(全量复制)
- 1.11 4.SSH连接方式
- 1.12 5.Linux实现秘钥管理
- 1.13 1.Window实现秘钥登录服务器
- 1.14 2.SSH访问控制
- 1.15 3.SSH练习案例
- 1.16 4.SSH服务登录防护手段配置文件/etc/ssh/sshd_config
- 1.17 5.SSH练习案例
- 1.18 ssh密钥登录
- 1.19 ssh访问控制
- 2 关于SSH密钥实例操作
SSH是Secure Shell Protocol的简写,在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。
1.SSH远程服务主要功能
- 1.提供远程连接服务器的服务 - 2.对传输的数据进行加密
ssh是一个加密的远程传输协议。(进入了密封的隧道)
telnet是一个远程传输协议。(明文的传输)
2.远程连接方式有哪些
ssh属于密文连接方式 监听在本地22/tcp端口(Linux、Unix、ubuntu、)
telnet属于明文连接方式 监听在本地23/tcp端口(路由器、交换机、防火墙)
3.SSH远程连接与Telnet远程连接区别
ssh服务是加密服务协议,telnet服务是非加密服务协议
ssh服务默认支持root用户登录,Telnet默认不支持root用户登录
4.安装telnet服务,然后使用root登录测试
[root@web01 ~]# yum install telnet-server -y
[root@web01 ~]# systemctl start telnet.socket
5.使用xshell的新建标签,输入如下指令[登录不上]
[e:\~]$ telnet 10.0.0.7
Kernel 3.10.0-862.el7.x86_64 on an x86_64
web01 login: root
Password:
Login incorrect
6.创建一个普通用户,再次使用telnet登录测试
[root@web01 ~]# useradd od
[root@web01 ~]# echo "1" | passwd --stdin od
[e:\~]$ telnet 10.0.0.7
web01 login: od
Password:
Last login: Mon Sep 10 09:57:39 from ::ffff:10.0.0.1
[od@web01 ~]$
7.SSH远程故障连接
- 服务端
22端口是否打开(telnet、nmap检测)
防火墙是否允许能连接22端口
- 客户端
1.ping 127.0.0.1 检测TCP/IP协议栈(检查网卡是否故障)
2.ping 172.16.1.31 排查是否是交换机故障
3.ping 网关地址 数据包是否能抵达路由器
4.ping 域名 检查DNS是否异常
2.SSH相关命令
SSH服务使一个C/S架构,有服务端,就有客户端
Windows客户端(Xshell、CRT)
Linux客户端(ssh命令)
[root@backup ~]# yum provides `which ssh`
[root@backup ~]# rpm -ql openssh-server
/etc/ssh/sshd_config --- ssh服务配置文件
/usr/sbin/sshd --- ssh服务进程启动命令
[root@backup ~]# rpm -ql openssh-clients
/usr/bin/scp --- 远程拷贝命令
/usr/bin/sftp --- 远程文件传输命令
/usr/bin/ssh --- 远程连接登录命令
/usr/bin/ssh-copy-id --- 远程分发公钥命令
1 SCP远程拷贝 - 限制拷贝速度
1.仅支持全量拷贝,覆盖式,效率低,基于ssh协议传输的数据(安全)
-
推
[root@nfs ~]# scp -rp nfs-file root@172.16.1.7:/tmp
-
拉
[root@nfs ~]# scp -rp root@172.16.1.7:/tmp/yum.log /tmp/
sftp-->XFTP
- 1.支持批量上传文件 - 2.支持单个文件超过4G - 3.支持断点续传
2.ssh远程登录服务器命令
ssh -p22 oldboy@10.0.0.150
- \# SSH连接远程主机命令的基本语法; - \# ssh 命令 - \# -p(小写), 用于指定远程主机端口,默认22端口可省略 - \# oldboy@remotehost - \# "@"前面为用户名,如果用当前用户连接,可以不指定用户 - \# "@"后面为要连接的服务器的IP
3.scp复制数据至远程主机命令(全量复制)
- \# SSH连接远程主机命令的基本语法 - \# scp 命令 - \# -P(大写) 指定端口,默认22端口可不写 - \# -r 表示递归拷贝目录 - \# -p 表示在拷贝文件前后保持文件或目录属性不变 - \# -l 限制传输使用带宽(默认kb)
推:PUSH,上传
scp -P22 -rp /tmp/oldboy oldboy@10.0.0.150:/tmp
/tmp/oldboy为本地的目录。
“@”前为用户名
“@”后为要连接的服务器的IP。
IP后的:/tmp目录,为远端的目标目录。
说明: 以上命令作用是把本地/tmp/oldboy推送至远端服务器10.0.0.150的/tmp目录
拉:PULL,下载
scp -P22 -rp root@10.0.0.7:/tmp/oldboy /opt/
还可以将远端目录或文件拉取至本地
结论:
-
1.scp通过加密进行远程拷贝文件或目录的命令。
-
2.scp拷贝权限为连接的用户对应的权限。
-
3.scp支持数据的推送和拉取,但每次都是全量拷贝,效率低下。
4.SSH连接方式
1.账户和密码
- **不方便** - **容易被攻击**
2.秘钥的登录方式
你需要登录哪台服务器,就将自己的公钥推送至对应的服务器即可
1.创建密钥对
• [root@m01 ~]# ssh-keygen -t rsa -C sirliu.com #一路回车即可
• [root@m01 ~]# ls ~/.ssh/
• id_rsa(钥匙) id_rsa.pub(锁头)
2.发送密钥给需要登录的服务器即可
[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
Manager能通过密钥的方式连接 nfs和backup以及web
//命令示例: ssh-copy-id [-i [identity_file]][user@]machine
ssh-copy-id //命令
-i //指定下发公钥的路径
[user@] //以什么用户身份进行公钥分发(root),如果不输入,表示以当前系统用户身份分发公钥
machine //下发公钥至那台服务器, 填写远程主机IP地址
5.Linux实现秘钥管理
ssh-keygen
1.Window实现秘钥登录服务器
- 1.Xshell工具->新建密钥生成工具->猛击下一步 - 2.连接服务器,在当前用户的家目录创建.ssh目录(权限700) - 3.在.ssh目录新建authorized_keys,权限是600 - 4.找到xshell里面工具-》用户秘钥管理者-》选中对应的秘钥-》属性-》公钥-》复制 - 5.将复制好的公钥粘贴至 ~/.ssh/authorized_keys中 ,保存,然后测试
[root@web1-7 ~]# mkdir .ssh -p;chmod 700 .ssh/;touch .ssh/authorized_keys;chmod 600 .ssh/authorized_keys
[root@web1-7 ~]# chmod 700 .ssh/
[root@web1-7 ~]# ll .ssh/ -d
drwx------ 2 root root 6 9月 12 08:39 .ssh/
[root@web1-7 ~]# touch .ssh/authorized_keys
[root@web1-7 ~]# ll .ssh/authorized_keys -d
-rw-r--r-- 1 root root 0 9月 12 08:40 .ssh/authorized_keys
[root@web1-7 ~]# chmod 600 .ssh/authorized_keys
[root@web1-7 ~]#
2.SSH访问控制
- **变更端口** - **不使用公网IP** - **禁止root登录** - **禁止使用密码登录**
3.SSH练习案例
SSH远程服务访问控制手段
- **1.更改SSH服务远程登录端口(一般)** - **2.更改SSH服务监听本地内网IP(不重要)** - **3.更改SSH服务禁止ROOT管理员登录(重要)** - **4.更改SSH服务密码登录认证为密钥登录(重要)** - **5.重要服务器都不使用公网IP地址(重要)** - **6.使用防火墙限制来源IP地址(一般) **
4.SSH服务登录防护手段配置文件/etc/ssh/sshd_config
Port 6666 # 变更SSH服务远程连接端口
ListenAddress 10.0.0.61 # 绑定本地内网地址
PermitRootLogin # 是否允许root用户远程登录
PasswordAuthentication # 是否允许使用密码登录
UseDNS # 是否进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication # 是否进行认证,影响ssh连接效率参数
[root@m01 ~]# /etc/ssh/sshd_config
\###SSH###
Port 6666
ListenAddress 10.0.0.61
PasswordAuthentication no
\#PermitRootLogin no
GSSAPIAuthentication no
UseDNS no
\###END###
[root@m01 ~]# sytemctl restart sshd
测试
[root@backup ~]# ssh 'root@172.16.1.61'
ssh: connect to host 172.16.1.61 port 22: Connection refused
[root@backup ~]# ssh 'root@172.16.1.61' -p6666
ssh: connect to host 172.16.1.61 port 6666: Connection refused
远程控制卡
dell idrac
5.SSH练习案例
1.解法
#1.先生成密钥对,分别在NFS和Backup上执行(-P指定密码 -f指定存放的位置)
[root@backup ~]# ssh-keygen -P "" -f ~/.ssh/id_rsa
[root@nfs ~]# ssh-keygen -P "" -f ~/.ssh/id_rsa
\#2.推送nfs和backup的公钥至Manager(执行如下指令即可)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.61
2.解法
##正常推送文件
[root@m01 ~]# scp file root@172.16.1.31:/root
file 100% 0 0.0KB/s 00:00
[root@m01 ~]# scp file root@172.16.1.41:/root
file 100% 0 0.0KB/s 00:00
\###不跟任何参数无法推送目录
[root@m01 ~]# mkdir dir
[root@m01 ~]# scp dir root@172.16.1.41:/root
dir: not a regular file
\##加参数后
[root@m01 ~]# scp -rp dir root@172.16.1.41:/root
[root@m01 ~]# mv file dir
[root@m01 ~]# scp -rp dir root@172.16.1.41:/root
file 100% 0 0.0KB/s 00:00
3.解法(批量)
[ $# -ne 1 ] && echo "Please Command" && exit 1
for i in 31 41
do
echo "##############This is 172.16.1.$i##############"
ssh root@172.16.1.$i "$1"
done
ssh密钥登录
ssh-keygen 生成密钥
ssh-copy-id 推送公钥
ssh 远程连接
scp 远程拷贝
ssh访问控制
- **1.不要公网IP** - **2.修改SSH连接端口** - **3.禁止root登录** - **4.禁止密码方式登录**
关于SSH密钥实例操作
SSH密钥提供一种更为安全的虚拟专有服务器登录机制,即利用SSH而非单纯依靠密码完成登录。与易被窃取的密码不同,SSH密钥几乎无法以暴力方式破解。生成的密钥对为我们提供两条字符串,即公钥与私钥。大家可以将公钥保存在任意服务器,并利用配备有私钥的客户端对该服务器者访问。当二者匹配时,系统即会解锁而不再需要输入密码内容。另外,大家也可以对私钥进行保护以额外提升安全性水平。
1 第一步——创建RSA密钥对
第一步是在客户设备上创建密钥对:
ssh-keygen -t rsa
2 第二步——保存密钥与口令
输入Gen Key命令后,系统会提示以下问题:
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
这里可以直接按下回车,从而将该文件保存在用户home目录中(本示例中的用户名为demo)。
Enter passphrase (empty for no passphrase):
大家可以自行决定是否使用口令。输入口令的作法确有优势:无论密钥的安全性有多高,也无论其如何进行加密,最终效果依然取决于其是否无法为他人所获取。在使用口令时,即使受口令保护的私钥落入未授权用户手中,他们亦无法在不知道口令内容的情况下使用该私钥。当然,其缺点在于在每次使用时,我们都需要手动输入口令。
完整的密钥生成流程如下所示:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+
现在公钥已经保存在/home/demo/.ssh/id_rsa.pub,而私钥则保存在/home/demo/.ssh/id_rsa。
3 第三步——复制公钥
密钥对生成完成后,我们需要将公钥放置在需要使用的虚拟服务器当中。
大家可以使用以下命令将公钥复制到新设备的authorized_keys文件当中。请确保将用户名与IP地址替换为您的实际值。
ssh-copy-id user@123.45.56.78
1
另外,大家也可以利用SSH直接粘贴密钥:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
无论使用哪种方法,其显示结果应如下所示:
The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
user@12.34.56.78's password:
Now try logging into the machine, with "ssh 'user@12.34.56.78'", and check in:
~/.ssh/authorized_keys
现在大家即可使用user@12.34.56.78实现登录而无需输入密码。不过,如果大家设置了口令,则需要在每次登录时都输入一次口令。
4 第四步(可选)——禁用Root登录密码
完成以上步骤后,我们还需要确保自己只能利用SSH密钥进行登录,即禁用root登录。
打开SSH配置文件:
sudo nano /etc/ssh/sshd_config
1
在文件中找到包含PermitRootLogin的一行,进行修改以确保用户只能利用SSH密钥完成登录:
PermitRootLogin without-password
1
重载以应用变更:
reload ssh
5 Digital Ocean Addendum
DIgital Ocean控制面板允许大家在创建新Droplet时为其添加公钥。大家可以在方便的位置生成SSH密钥,例如本地计算机,而后将其公钥上传至-SSH key位置。
最新评论
# 这只是一个创建远程登录并授权的语句、仅作为记录 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Fit2cloud!' WITH GRANT OPTION;
当MGR集群初始化结束后,需要开启MGR集群自启动(需要有一台节点是自动开启引导) loose-group_replication_start_on_boot = ON #设置节点是否在启动时自动启动 MGR 集群 loose-group_replication_bootstrap_group = ON #设置节点是否作为初始引导节点启动集群
密码:blog.sirliu.com
本内容密码:blog.sirliu.com 最新整理的文章在这里喔:https://blog.sirliu.com/2018/11/shell_lian_xi_ti.html