我们平时连接Linux服务器做维护的时候,通常是直接命令行(Terminal)下直接输入 ssh [email protected]
ssh -p1234 [email protected]
类似这样的,然后接下来输入密码,如果运维的机器比较多,密码比较复杂或者都不一样的时候,每次输入就会比较麻烦,这时候,就可以采用key-file(免密码)登录了。
在客户端的命令行运行,提示key保存的位置,默认位置/Users/Terry/.ssh/id_rsa直接按回车就好了,我这里因为已经生成过了,提示/Users/Terry/.ssh/id_rsa already exists.Overwrite (y/n)? n
如果你也提示这个,说明已经生成过了,就输入n,不要覆盖,直接跳过这一步
如果是Windows电脑,客户端的程序使用Windows PowerShell,路径可能是C:\Users\Terry/.ssh/id_rsa
,如果是MacOS,使用Terminal.app (还有其他一些第三方都是类似的,比如Windows下的MobaXterm,MacOS下的iTerm2等)
ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/Terry/.ssh/id_rsa):
# 输出id_rsa.pub的内容,并复制到剪贴板,为下面做准备,或者直接作为文本文件打开后复制内容 cat /Users/Terry/.ssh/id_rsa.pub
最后登录到远程服务器(这次先用密码登录),注册你的客户端的key-file,文件夹是/root/.ssh,如果没有就新建,如果你免密码登录的用户名不是root,是普通用户(举例是user),那么这个文件夹可能是 /home/user/.ssh,下面的/root/.ssh文件夹跟着都修改成/home/user/.ssh
ssh [email protected] # 新建/root/.ssh的文件夹,如果已存在,就报错,也没有关系 mkdir -p /root/.ssh # 权限只能是600 chmod 600 /root/.ssh # 把刚才客户端复制的id_rsa.pub的内容,这里假设是XXXYYY, 添加到authorized_keys文件里,如果文件已存在,就追加到文件的最后,你也可以vi /root/.ssh/authorized_keys,然后把d_rsa.pub的内容填上 echo XXXYYY > /root/.ssh/authorized_keys # 再修改或者确认authorized_keys的权限是600 chmod 600 /root/.ssh/authorized_keys
这样就大功告成,再次客户端输入ssh [email protected] 就不会出现提示密码,直接进入ssh了。
这里再说明下,其他一些第三方客户端,比如sftp,ssh客户端,基本上都是支持免密码登录的,一般都是优先找/Users/Terry/.ssh/id_rsa的key-file尝试登录,如果没有,就找一下这些软件的选项,找到登录方式选择key-pair之类的,key的位置,就指定选择到C:\Users\Terry/.ssh/id_rsa
或/Users/Terry/.ssh/id_rsa
文章评论