之前写过修改ssh端口的文章,今天看见别人的一篇文章:在使用sftp命令时可以添加密钥文件的地址实现免密码连接vps,便用xshell测试一下。
sftp命令添加密钥文件实现免密码连接vps的代码:
- admin@new:~# sftp -o Identityfile=/root/identify1.txt admin@*.*.*.* -oPort=22
下面开始用Xshell设置密钥登录vps
1、用xshell生成密钥对
选择RSA密钥类型,密钥长度可以选择1024或2048,然后点击下一步按钮。
直接点击下一步。
密钥名称可以随便取,密码我这里为了登陆vps的时候只用私钥而不用填写密码就不填了(当然,填了会更安全)。
最后保存公钥在本地电脑,点击完成。
2、将公钥上传到vps或服务器
①将刚刚生成并保存的公钥id_rsa_2048.pub上传到你的vps的/root/.ssh目录(如果目录不存在,则自己新建一个。如果用winscp新建.ssh目录后发现它消失了,那么按照以下步骤显示隐藏文件:选项->面板->“显示隐藏文件”打钩。),将id_rsa_2048.pub重命名为authorized_keys并将它的权限设置为:600
②用winscp打开vps的/etc/ssh/sshd_config文件,找到RSAAuthentication和PubkeyAuthentication,将两行前面的#注释删除。
③重启ssh:
- service ssh restart #debian、ubuntu
3、保存私钥并配置xshell使用密钥登陆vps
导出刚刚生成的私钥id_rsa_2048。
xshell新建会话,填写名称及IP。
点击左侧“用户身份验证”,方法选“Public Key”,用户密钥选择刚刚生成的私钥id_rsa_2048,点击确定。
连接vps,选择登陆密钥,点击确定,测试能否成功登陆vps。成功登陆后看下一步。
4、设置禁止密码登陆vps
用winscp打开vps的/etc/ssh/sshd_config文件,找到PasswordAuthentication将后面的yes改成no,重启ssh。
- service ssh restart #debian、ubuntu
重启ssh后可以测试只用密码是登陆不了vps了。
5、生成私钥登陆winscp
注意到,直接用刚才生成的私钥id_rsa_2048是登陆不了winscp的。
打开winscp,新建站点,填写相关信息后点击高级。
点击左侧的验证,导入密钥文件。
将右下角选择为“所有文件”。
选择xshell导出的私钥,点击打开。
点击“确定”。
再“确定”。
最后点击“Save private key”保存putty格式的私钥,选择该密钥即可用于winscp登陆vps。