一 : SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。这里仅仅介绍openSSH。 SSH之所以能够保证安全,原因在于它采用了公钥加密。 整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。 这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。 可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。 二:SSH两种方式的用户登录认证: 1:基于passwd 2:基于key 三:SSH用法 1:基于passwd登陆(以wang用户登陆远程主机) [root@centos6 ~]# ssh wang@192.168.154.140 wang@192.168.154.140's password: [wang@station1 ~]$ 2:配置文件:/etc/ssh/ssh_config 3:远程执行命令(执行命令并显示结果后返回当前主机) [root@centos6 ~]# ssh wang@192.168.154.140 who wang@192.168.154.140's password: root pts/1 2017-12-31 03:44 (192.168.154.1) root pts/2 2017-12-31 07:57 (192.168.154.132) [root@centos6 ~]# 4:-p port:远程服务器监听的端口 配置文件:vim /etc/ssh/sshd_config 将其改为自己想要的端口默认22,例如将其改为9527(port 22变为port 9527) 生效方式:service sshd restart (centos6.9)
systemctl reload sshd(centos7.4) 6:-v 调试模式(可以排错) 7:-c 压缩方式 8:-b 指定连接的源ip [root@centos6 ~]# ip a a 192.168.154.27/24 dev ens33(在一个网卡添加多个ip) 9:-x 支持x11转发 10:-Y 支持信任x11转发 ForwardX11Trusted yes
11:-t 强制伪tty分配 ssh -t remoteserver1 ssh remoteserver2 四 :基于密钥的登录方式 1 首先在客户端生成一对密钥(ssh-keygen) 2 并将客户端的公钥ssh-copy-id 拷贝到服务端 3 当客户端再次发送一个连接请求,包括ip、用户名 4 服务端得到客户端的请求后,会到authorized_keys中查 找,如果有响应的IP和用户,就会随机生成一个字符串, 例如:acdf 5 服务端将使用客户端拷贝过来的公钥进行加密,然后发 送给客户端 6 得到服务端发来的消息后,客户端会使用私钥进行解密 ,然后将解密后的字符串发送给服务端 7服务端接受到客户端发来的字符串后,跟之前的字符串进 行对比,如果一致,就允许免密码登录 基于密钥的认证: (1) 在客户端生成密钥对 ssh-keygen -t rsa [-P ''] [-f “~/.ssh/id_rsa"]
(2) 把公钥文件传输至远程服务器对应用户的家目录 ssh-copy-id [-i [identity_file]] [user@]host (3) 测试 (4) 在SecureCRT或Xshell实现基于key验证 在SecureCRT工具—>创建公钥—>生成Identity.pub文件 转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化 格式),并复制到需登录主机上相应文件authorized_keys中, 注意权限必须为600,在需登录的ssh主机上执行: ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys (5)重设私钥口令: ssh-keygen –p
(6)验证代理(authentication agent)保密解密后的密钥 • 这样口令就只需要输入一次 • 在GNOME中,代理被自动提供给root用户 • 否则运行ssh-agent bash (7)钥匙通过命令添加给代理 ssh-add 免口令登陆如下: 五:解决连接慢问题: 1:改配置文件:即vim /etc/ssh/ssh_config 2:UseDNS yes改为UseDNS no 3:GSSAPIAuthentication yes改为GSSAPIAuthentication no 4:重启服务