在云服务器厂商的后台都有提供在线生成密钥功能,腾讯云叫“SSH密钥”,阿里云叫“密钥管理”,只要下载私钥pem文件然后用工具或者执行命令“ssh -i 私钥pem文件路径 username@ip”即可用密钥登录远程连接上Linux服务器。
但是像腾讯云需要先关闭云服务器才能绑定实例,这样会影响服务器正常使用,这个时候我们可以自己在服务器上通过“ssh-keygen”生成RSA密钥对来设置Linux服务器使用密钥登录进行SSH远程连接。
我们直接在当前用户的“.ssh”目录下生成RSA密钥对,首先打开目录“cd ~/.ssh”,然后执行“ssh-keygen”命令,接着直接回车表示把密钥文件保存在默认位置,接下来是设置私钥密码直接回车则不设置密码,然后确认密码,最后会生成RSA密钥对文件,id_rsa 为私钥,id_rsa.pub 为公钥。
接着通过“cat id_rsa.pub >> authorized_keys ”安装公钥,然后下载id_rsa 私钥文件到本地。
默认“authorized_keys”文件的权限是当前用户具有读写权限、其余用户没有任何权限,如果不是可以执行“chmod 600 authorized_keys”。默认“.ssh”目录当前用户具有可读可写可执行权限、其余用户没有任何权限,如果不是可以执行“chmod 700 ~/.ssh”。
然后就可以用工具或者执行命令“ssh -i 私钥pem文件路径 username@ip”直接访问服务器。
需要注意的是从云服务器后台网页下下来的pem文件可能会报如下“Permissions 0644”权限太开放问题。
XuMBP:Downloads xubingtao$ ssh -i /Users/xubingtao/Downloads/private_key.pem username@ip
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/xubingtao/Downloads/private_key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/xubingtao/Downloads/private_key.pem": bad permissions
这个时候只需要执行“chmod 600 pem文件路径”即可。
而从Linux服务器下载的id_rsa私钥文件可能会报如下“Permissions 0777”同样是权限太开放问题。
XuMBP:key xubingtao$ ssh -i /Users/xubingtao/Downloads/key/id_rsa username@ip
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/Users/xubingtao/Downloads/key/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/xubingtao/Downloads/key/id_rsa": bad permissions
同样执行“chmod 600 pem文件路径”即可。
如果还是不能连上服务器可以尝试通过“sudo vim /etc/ssh/sshd_config”加入下面两个配置。
RSAAuthentication yes
PubkeyAuthentication yes
正常情况下通过以上操作不需要加入上面两个配置都能实现密钥登录和密码登录,如果想关闭密码登录可以将“sshd_config”文件里面配置为“PasswordAuthentication no”,这个要确保能先用密钥登录以免造成密钥和密码都无法登录的麻烦,不过在云服务器后台还是生可以成密钥然后通过网页登录的。
如果是“PasswordAuthentication no”则密码登录会报“username@ip Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)”。
若修改“/etc/ssh/sshd_config”文件要通过“sudo service sshd restart”指令重启 SSH 服务。
展开阅读全文
上一篇: 分析并解决curl: (7) Failed connect to xxx; 拒绝连接/Connection refused问题