SSH 的全称是 Secure Shell ,使用非对称加密方式,传输内容使用 rsa 或者 dsa 加密,可以有效避免网络窃听。有时候,我们需要能免密码登陆 Linux 系统,比如 Hadoop 操作,这时就要开启 SSH 免密码登陆。
注意,不用的用户生成的密钥是不同的,每个用户生成密钥都放在该用户主目录的“.ssh”目录中;比如:root 生成的密钥存放在“/root/.ssh”目录,个人用户的存放在“/home/[username]/.ssh”目录中。
ssh client 有两个配置文件,/etc/ssh/ssh_config 和 ~/.ssh/config,前者是对所有用户,后者是针对特定用户,两个文件的格式是一样的,待会密钥文件会生成在~/.ssh下。
现在进入正题,假设我要在 A 设备(我这里是本地mac OS,其他 linux 系统也都可以)免密码登陆 B 服务器。
第一步:在A中生成密钥
在A进入~/.ssh文件夹,执行以下命令:
ssh-keygen -t rsa
一路回车后,在~/.ssh下会生成 id_rsa,和 id_rsa.pub,其中id_rsa是密钥,id_rsa.pub是公钥。
第二步:把在 A 机生成的 id_rsa.pub 拷贝到 B 机上。
怎么跨主机复制文件呢,下面的命令可以做到:(假设放在 B 的 tmp 目录中)
scp id_rsa.pub root@B:/tmp //scp -r是拷贝文件夹
# 举个例子:将服务器的/www/api/ 复制到本地的~/www(在本地执行)
scp -r root@101.200.52.143:/www/api/ ~/www
第三步:将刚才拷贝的 id_rsa.pub 公钥文件拷贝到 B 的 authorized_keys 目录中(没有就创建,注意权限不能是777,可以设置成700或者400):
cd ~/.ssh
cat /tmp/id_rsa.pub>>authorized_keys
如果需要修改权限,可以执行:
chmod 400 authorized_keys
然后就可以去A上面测试登录了,看是否还需要输入密码,如果直接进入了就表示成功了。
另外,每次登陆都要输入 ssh user@主机 -u -p
太麻烦了,我们可以修改一下 ssh_config 。
按照如下步骤即可:
cd /etc/ssh && sudo vim ssh_config
# 或者(这个两个目录的都会生效)
cd ~/.ssh && sudo vim config
在其中加入如下代码:
Host service
HostName 127.0.0.1
User zhangsan
IdentifyFile xxx
其中service是别名 127.0.0.1 是你要登陆的服务器,zhangsan是用户, IdentifyFile是密钥,之后直接使用下面的命令就可以通过 ssh 免密登录了,十分方便。
ssh service
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Linux服务器配置ssh免密码登陆教程