- A+
SSH 为 Secure Shell 的缩写,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议。无论何时使用 SSH 在无安全网络上发送数据,它都会在源系统上自动地被加密,并且在目的系统上解密。SSH 提供了四种加密方式,基于密码认证,基于密钥认证,基于主机认证和键盘认证。最常用的认证方式是基于密码认证和基于密钥认证。
在基于密码认证中,你需要的仅仅是远程系统上用户的密码。如果你知道远程用户的密码,你可以使用 ssh user@remote-system-name 访问各自的系统。另一方面,在基于密钥认证中,为了通过 SSH 通信,你需要生成 SSH 密钥对,并且为远程系统上传 SSH 公钥。每个 SSH 密钥对由私钥与公钥组成。私钥应该保存在客户系统上,公钥应该上传给远程系统。
配置基于密钥认证的 SSH
切换到普通用户long
su long
删除之前生成的密钥
rm -rf ~/.ssh
生成带密码的密钥
ssh-keygen -t rsa -P '123456' -f ~/.ssh/id_rsa
加入授权
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
添加权限
chmod 600 ~/.ssh/authorized_keys
修改SSH配置文件,启用RSA认证
sudo sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/' /etc/ssh/sshd_config; sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
本地测试
ssh localhost
添加其他服务器(方法1)
cat ~/.ssh/id_rsa.pub | ssh user@ip 'cat - >> ~/.ssh/authorized_keys'
添加其他服务器(方法2)
ssh-copy-id user@ip
第二种方法比较简单,如果两个服务器的用户名相同的话,直接 ssh ip就可以连接
Windows客户端生成公钥
使用git生成公钥(方法一)
打开windows命令提示符,输入ssh-keygen -t rsa 回车生成密钥
进入到用户公钥目录,并复制公钥到服务器上
使用Xshell生成公钥(方法二,私钥默认保存在Xshell中,需手动导出)
Xshell--工具--新建用户密钥生成向导
密钥类型:RSA 密钥长度2048位,默认直接点击下一步
密钥生成成功,直接下一步
自己定义密钥名称和密码(为了安全,密钥最好也得设置密码)
保存公钥,点击完成
公钥添加到服务器上
vim ~/.ssh/authorized_keys
使用Xshell连接,方法选成Public key,用户名,用户密钥选择自己的私钥id_rsa,就可以直接连接了
禁止SSH密码认证
sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
重启服务,让配置生效
sudo systemctl restart sshd
当前xshell会话不要关闭,新建会话测试