[Linux]SSH免密码连接远程Linux主机(Windows、MacOS、Linux下的客户端通用)

2021-02-05 24点热度 0人点赞 0条评论

我们平时连接Linux服务器做维护的时候,通常是直接命令行(Terminal)下直接输入 ssh [email protected]  ssh -p1234 [email protected]类似这样的,然后接下来输入密码,如果运维的机器比较多,密码比较复杂或者都不一样的时候,每次输入就会比较麻烦,这时候,就可以采用key-file(免密码)登录了。

首先,准备工作,生成客户端的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):
准备好刚才生成的key的公钥
# 输出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

 

Terry

记录开发运维过程中遇到的坑以及解决方案,干货分享

文章评论

*

code