新乐网

Good Luck To You!

设置SSH用密钥登录服务器

Secure Shell 协议,简称 SSH,是一种加密网络协议,用于客户端和主机之间的安全连接,并支持各种身份验证机制,目前最实用的身份验证机制就是基于密码的身份验证和基于公钥的身份验证两种。Linux系统如何设置基于 SSH 密钥的身份验证,以及如何免密连接到主机的教程。

第一步:检查现有的 SSH 密钥对

  首先检查主要是为了不覆盖现有密钥。运行以下Is 命令以查看,存在可以使用这些密钥并跳过第二步,或备份旧密钥并生成新密钥。如果看到 No such file or directory 或 no matches found 意味着没有 SSH 密钥,则可以继续执行下一步并生成新密钥。

1
ls -al ~/.ssh/id_*.pub

第二步:生成新的 SSH 密钥对

  以下命令将生成一个新的 4096 位 SSH 密钥对,并将电子邮件地址作为注释:

1
ssh-keygen  -b 4096 -C Email@qq.com

  ssh-keygen常见参数:

1
2
3
4
5
6
7
8
9
10
11
-t:指定生成密钥的类型,默认使用SSH2d的rsa
-f:指定生成密钥的文件名,默认id_rsa(私钥id_rsa,公钥id_rsa.pub)
-b:指定密钥长度(bits),RSA最小要求768位,默认是2048位;DSA密钥必须是1024位(FIPS 1862标准规定)
-C:添加注释;
-P:提供旧密码,空表示不需要密码(-P ‘’)
-N:提供新密码,空表示不需要密码(-N ‘’)
-R hostname:从known_hosta(第一次连接时就会在家目录.ssh目录下生产该密钥文件)文件中删除所有属于hostname的密钥
-e:读取openssh的私钥或者公钥文件;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-q:静默模式;

  按 Enter 接受则默认文件位置和文件名:

  Enter file in which to save the key(/home/yourusername/.ssh/id_rsa):

  接下来,ssh-keygen 工具将要求输入安全密码(如果不想使用密码短语,请按 Enter:),您如果选择使用密码短语,将获得额外的安全保护。多数情况下,开发人员和系统管理员使用 SSH 而不使用密码,因为它们对完全自动化的流程很有用。

 第三步:检查下.ssh目录authorized_keys文件是否存在,存在直接跳过第三步

  没有的话,创建一个,然后将id_rsa.pub的内容追加到authorized_keys文件尾。 

1
2
3
cd .ssh
touch authorized_keys               ->如果ssh中存在此文件则省略此步骤
cat id_rsa.pub >> authorized_keys   -> 将id_rsa.pub的内容追加到authorized_keys

 第四步:检测,是否需要修改ssh的配置(可忽略)

1
2
3
4
5
6
7
[root@centos-004 .ssh]#vim /etc/ssh/sshd_config
 
RSAAuthentication yes
PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys

  这里有一点很重要,在你配置密钥登录成功之前,千万不要太自信将PasswordAuthentication 设置no,否则你密钥登录不了,然后又禁止密码登录,就悲剧了。在密钥登录设置成功之后,可以将PasswordAuthentication 设置为no,禁用密码登录了,比较安全。

第五步:复制公钥

  生成SSH 密钥对后,为实现没有密码登录到主机,需要将公钥复制到要管理的主机。将公钥复制到主机的最简单方法是使用名为的命令 ssh-copy-id 。在本地主机终端类型:

  ssh-copy-id remote_username@server_ip_address

  系统将提示输入 remote_username 的密码:

  remote_username@server_ip_address's password:

  用户通过身份验证后,公钥将附加到远程用户 authorized_keys 文件,并且将关闭连接。如果由于某种原因, ssh-copy-id 本地主机上没有该实用程序,则可以使用以下命令复制公钥:

  cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

第六步:使用 SSH 密钥登录

 1、 设置本地私钥权限为600: chmod 600 id_rsa,要不然显示错误,使用私钥登录。

     2、完成上述步骤后,就能够登录到远程主机而不会被提示输入密码,测试口令:

       ssh -i 密钥路径 用户名@IP地址


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2026年1月    »
1234
567891011
12131415161718
19202122232425
262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
友情链接
  • Z-BlogPHP
  • 订阅本站的 RSS 2.0 新闻聚合
网站收藏

Powered By Z-BlogPHP 1.7.3