ssh免密登录

发布时间:2024年01月16日

案例环境

服务器IP
本地服务器-hostA192.168.38.10
远程服务器-hostB192.168.38.20

1、生成密钥对

?ssh-keygen命令生成密钥,-t用于指定密钥的加密算法,一般可使用 DSARSA算法。ssh-keygen默认使用rsa密钥,所以不加-t rsa也行。

# ssh-keygen 命令用于生成密钥对时,一直回车键即可
[root@hostA ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:keBNoGBCj0QdHoXVpE1vAIgdovrWuOkpza46XjDtpO8 root@hostname
The key's randomart image is:
+---[RSA 2048]----+
|+=*+B+*=.        |
|o+=*.o+=o.       |
|.. o....+o       |
|. .     ..       |
|.o o    S        |
| .*o             |
| ++o.            |
|o.=+             |
|=BBE             |
+----[SHA256]-----+

# 用户的~/.ssh目录下会生成id_rsa私钥和id_rsa.pub公钥文件
[root@hostA ~]# ll ~/.ssh
-rw------- 1 root root 1675 Jan 12 09:52 id_rsa
-rw-r--r-- 1 root root  395 Jan 12 09:52 id_rsa.pub
# ssh-keygen -t rsa -C "123456@qq.com" -f ~/.ssh/test/crm-git
-t 表示密钥的类型 
-b 表示密钥的长度
-f 表示密钥的存放位置路径
-C 用于识别这个密钥的注释 ,这个注释可以输入任何内容(邮箱),很多网站和软件用这个注释作为密钥的名字

2、将公钥保存到远程服务器

# 将公钥保存到远程服务器的~/.ssh/authorized_keys文件中
# 【方法一:】
[root@hostA ~]# ssh root@192.168.38.20 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

# 【方法二:】 
[root@hostA ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.38.20

?远程服务器hostB的~/.ssh/目录:

[root@hostB ~]# ll ~/.ssh/
-rw-r--r-- 1 root root 406 Jan 12 09:54 authorized_keys

?此时就可以ssh免密登陆远程服务器了:

[root@hostA ~]# ssh root@192.168.38.20

【私钥保存在当前服务器的其他目录】

?如果私钥文件保存在其他目录,可以使用 -i 参数指定私钥文件的目录及文件名:

[root@hostA ~]# mv .ssh/id_rsa ~/testpath/id_rsa_test
[root@hostA ~]# ssh root@192.168.38.20 -i ~/testpath/id_rsa_test

?使用私钥登陆时需要注意,私钥文件与远程服务器中的authorized_keys文件的权限都必须为600,否则会登陆出错!

【公钥保存在远程服务器的其他目录】

?在默认情况下,公钥文件的命名应该是 authorized_keys,并且位于远程服务器的 .ssh 目录中。

?实际上,可以通过修改 /etc/ssh/sshd_config 文件的AuthorizedKeysFile来指定公钥路径及文件名。当然,也需要把公钥文件移动到更新后的路径。

[root@hostB ~]# vi /etc/ssh/sshd_config
...
AuthorizedKeysFile     .ssh/authorized_keys

?修改配置文件后,需重新启动 SSH 服务器使配置生效。

?使用私钥登陆时需要注意,私钥文件与远程服务器中的authorized_keys文件的权限都必须为600,否则会登陆出错!

文章来源:https://blog.csdn.net/qq_41210783/article/details/135630692
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。