前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux SSH 密钥登陆免密码

Linux SSH 密钥登陆免密码

作者头像
Yifans_Z
发布2023-08-23 18:31:51
9290
发布2023-08-23 18:31:51
举报
文章被收录于专栏:与荔枝一起成长

最近有需求使用 SSH 进行通信,而且要需免密码,总结了 SSH 密钥登陆免密码的方法。

快速配置

  • 本机 ip:192.168.1.1
  • 服务器 ip:192.168.1.2

要实现本机免密码登录服务器,执行如下命令:

代码语言:javascript
复制
ssh-copy-id username@192.168.1.2

如果命令成功,则说明配置成功。如果执行失败,则需要参考下面的步骤进行配置。

本地配置步骤

客户端生成公钥、私钥

代码语言:javascript
复制
ssh-keygen -t rsa -P ''
  • -t 表示 key 的类型
  • -P 表示密码,-P '' 就表示空密码,也可以不用 -P 参数

运行完之后在 ~/.ssh 目录下生成私钥 id_rsa 和公钥 id_rsa.pub

将公钥添加到服务器

将客户端公钥 id_rsa.pub 写入到服务端 ~/.ssh/authorzied_keys 之中。

代码语言:javascript
复制
cat ~/.ssh/id_rsa.pub

复制输出的内容,登陆服务端:

代码语言:javascript
复制
vim ~/.ssh/authorized_keys

粘贴到最后一行。如果没有这个 authorzied_keys 文件,可以创建一个。

设置文件权限

服务端,非必须。

代码语言:javascript
复制
sudo chmod 755 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys

客户端重启服务

代码语言:javascript
复制
sudo service ssh restart

此时就可以不免密码登陆服务端了。

以证书登录后 使用 sudo 操作

设置用户以证书登录后,使用 sudo 操作。在服务端设置:

代码语言:javascript
复制
sudo visudo
代码语言:javascript
复制
%sudo ALL=(ALL:ALL) ALL

# 将上一行替换为:

%sudo ALL=(ALL) NOPASSWD:ALL

类似 AWS PEM 配置方法

亚马逊 AWS 虚拟服务器使用一个预先生成的 *.pem 证书文件(密钥)为客户端和服务器之间建立连接。 例如:

代码语言:javascript
复制
ssh -i ~/ec2.pem ubuntu@12.34.56.78

首先确定你可以以密码的形式连接远程服务器,也可以 创建一个非超级管理员用户,并增加 sudo 权限

代码语言:javascript
复制
sudo ssh root@12.34.56.78

客户端生成验证没有密码密钥对

代码语言:javascript
复制
ssh-keygen -t rsa -b 2048 -v

执行上述命令首先会让你输入生成密钥的文件名:我这里输入的 myPemKey 之后一路回车。

代码语言:javascript
复制
Generating public/private rsa key pair.
Enter file in which to save the key (/home/anonymouse/.ssh/id_rsa): myPemKey
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in hetzner.
Your public key has been saved in hetzner.pub.
The key fingerprint is:
bb:c6:9c:ee:6b:c0:67:58:b2:bb:4b:44:72:d3:cc:a5 localhost@localhost
The key's randomart image is:

在执行命令的当前目录下会生成一个 myPemKey.pubmyPemKey 两个文件。

服务端添加公钥

把生成的 myPemKey.pub 通过本地命令推送到服务器端,使服务器自动添加认证这个证书

代码语言:javascript
复制
ssh-copy-id -i ~/myPemKey.pub root@12.34.56.78

输入你的 root 用户密码

测试连接

代码语言:javascript
复制
sudo ssh -i ~/myPemKey root@12.34.56.78

或者把 myPemKey 重命名为 myPemKey.pem

代码语言:javascript
复制
sudo ssh -i ~/myPemKey.pem root@12.34.56.78

禁用密码连接

注意:要保证 .pem 连接成功的状态下,禁用密码连接。

代码语言:javascript
复制
sudo vi /etc/ssh/sshd_config

找到这一行 #PasswordAuthentication yes 取消前边的 # 注释,改为:

代码语言:javascript
复制
PasswordAuthentication no

重启 ssh 服务

代码语言:javascript
复制
sudo service ssh restart

References

– EOF –

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速配置
  • 本地配置步骤
    • 客户端生成公钥、私钥
      • 将公钥添加到服务器
        • 设置文件权限
          • 客户端重启服务
          • 以证书登录后 使用 sudo 操作
          • 类似 AWS PEM 配置方法
            • 客户端生成验证没有密码密钥对
              • 服务端添加公钥
                • 测试连接
                  • 禁用密码连接
                  • References
                  相关产品与服务
                  云服务器
                  云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档