在Windows远程服务器我喜欢使用 xshell来进行,可以方便的保存服务器和密码信息。在Mac大家使用什么工具进行远程ssh呢?我个人觉得Mac下自带的“终端”功能就挺好的,缺点就是每次都要输入ip地址+密码,有没有什么办法可以记住密码呢?
理论上Linux大同小异,应该也是可用的。
1本地生成一对公钥密钥
ssh-keygen -t rsa
过程中要让你选择一下保存路径,直接复制默认的值过去就好了。我设置的目录是:/Users/itkey/.ssh/id_rsa
这一步设置的密码,以后只要你连接ssh都要输入这个密码。如果感觉麻烦就直接为空好了。
设置一下权限。
chmod 600 /Users/itkey/.ssh/id_rsa.pub
2公钥放到服务器上
ssh-copy-id user@ip.com
user
换成远程用户名
ip.com
换成远程服务器的地址
3配置保存ssh服务器信息
第一次配置,则新建一个配置文件。
touch ~/.ssh/config
用你喜欢的文件编辑器编辑一下。
#自定义主机名称,写上好记的就行了。
Host goodjob
#SSH连接的地址,IP或者是域名
HostName ip.cn
#SSH远程登录的名称
User user
#SSH的端口默认是22
Port 22
#指向私钥的位置,这里写你自己的地址。
IdentityFile /Users/itkey/.ssh/id_rsa
这里特别说明下,IdentityFile写的是/Users/itkey/.ssh/id_rsa
,
不是/Users/itkey/.ssh/id_rsa.pub
之前看的教程里写错了,研究了半天。
如果有多台ssh服务器呢?那就把上面的内容多复制几次就好了。如下:
#自定义主机名称,写上好记的就行了。
Host goodjob
#SSH连接的地址,IP或者是域名
HostName ip.cn
#SSH远程登录的名称
User user
#SSH的端口默认是22
Port 22
#指向私钥的位置,这里写你自己的地址。
IdentityFile /Users/itkey/.ssh/id_rsa
#自定义主机名称,写上好记的就行了。
Host goodjob2
#SSH连接的地址,IP或者是域名
HostName ip2.cn
#SSH远程登录的名称
User user2
#SSH的端口默认是22
Port 22
#指向私钥的位置,这里写你自己的地址。
IdentityFile /Users/itkey/.ssh/id_rsa
实测 Host是可以用中文的,这样就比较好记了。
登录ssh
以后登录只需要输入:
ssh goodjob
无需输入密码就可以登录了,一劳永逸。
很多服务器的密码超级长还没有规律,这下不用输入密码啦!真爽。
服务端设置
这种登录方式,应该是跟 ssh服务端有关系的,如果服务端不允许这种方式登录的话,就会失败。
比如:直接连接堡垒机的方式,连接时候还是要我输入密码。
我用的ssh服务端一般是由客户提供的,我尽量不会动客户的设置,所以我没修改过服务端的设置。
服务端的设置我没有实测,以下是网上复制过来的。
在服务器设置一下自动检验的信息:
打开/etc/ssh/sshd_config这个文件
sudo gedit /etc/ssh/sshd_config
去掉下面几行前面“#”注释
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
参考文档
感谢以下文章。
《SSH连接服务器+让服务器记住密码及IP》
https://blog.csdn.net/sunyao_123/article/details/74783582
《id_rsa.pub file SSH Error: invalid format》
https://stackoverflow.com/questions/48328446/id-rsa-pub-file-ssh-error-invalid-format
《How to Fix “WARNING: UNPROTECTED PRIVATE KEY FILE!” on Mac and Linux》
https://stackabuse.com/how-to-fix-warning-unprotected-private-key-file-on-mac-and-linux/