执子之手

与子偕老


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 搜索
close

如何无密码登录SSH

时间: 2017-07-23   |   分类: 运维     |   阅读: 770 字 ~2分钟   |   访问: 0

我们在用Jenkins做发布工具的时候,经常用到的功能是通过SSH通道完成各种功能。例如使用scp命令拷贝安装包到服务器上,通过ssh -t命令执行服务器上的脚本等。

这时就需要配置无密码登录,否则无法做到自动执行命令。如果每次都手动输入密码,想想都不现实。要实现无密码登录,需要配置好SSH允许证书登录。

其原理是使用了公钥体系,假设有服务器Server,用户在服务器Client上,用户在服务器Client上有私钥Private Key,在服务器Server上有对应的公钥Public Key。这样访问的时候Server就能够通过公钥体系进行验证:要求用户使用其私钥进行签名,从而确保用户拥有私钥,以此验证用户身份。如下图:

公钥体系原理图

1. 服务器配置

默认SSH的配置已经允许通过证书登录。但是为了安全起见,有些配置可以修改一下(非必须,请根据需要修改):

1PermitRootLogin            # 默认yes,改成no(禁用root通过ssh登录)
2PasswordAuthentication     # 默认yes,改为no(禁用使用密码认证登录,必须有证书才能登录)

2. 密钥生成

用户密钥的生成使用ssh-keygen命令即可。注意:该命令最好在Client端生成,因为私钥证书需要确保安全性,不要泄露,否则攻击者也就拥有了同样的权限。

1ssh-keygen -t rsa

ssh-keygen可以生成多种算法类型的密钥,例如rsa, dsa等。一般选择rsa即可。其生成的证书路径保存在~/.ssh文件夹下。按照算法类型进行命名,如果使用RSA算法,则生成的两个文件为:

1id_rsa  私钥文件。确保其文件访问模式为600(只允许当前用户访问)
2id_rsa.pub  公钥文件

3. 公钥上传到服务器上

公钥需要上传到服务器上,并添加到Server上某个用户的~/.ssh/authorized_keys文件中。如果文件不存在,可以新建一个。

4. 使用

上述配置好后,就可以使用ssh相关的命令进行无密码操作了。例如:

1scp abc.tar.gz root@192.168.50.81:~
2ssh -t root@192.168.50.81 bash /root/deploy.sh abc.tar.gz
#Linux# #SSH#
xargs使用复杂参数
在alias命令中使用单引号
  • 文章目录
  • 站点概览
Orchidflower

Orchidflower

Do one thing at a time, and do well.

77 日志
6 分类
84 标签
GitHub 知乎 OSC 豆瓣
  • 1. 服务器配置
  • 2. 密钥生成
  • 3. 公钥上传到服务器上
  • 4. 使用
© 2009 - 2024 执子之手
Powered by - Hugo v0.113.0
Theme by - NexT
ICP - 鲁ICP备17006463号-1
0%