配置SSH无密钥登陆

SSH公钥登录能避免每次登录输入密码的繁琐过程。通过生成公钥私钥对,将公钥拷贝到远程主机的authorized_keys文件中,实现无密码登录。
  • 使用密码登录,每次都必须输入密码,非常麻烦。SSH还提供了公钥登录,可以省去输入密码的步骤。

  • 所谓"公钥登录",就是用户将自己的公钥存储在远程主机上。登录的时候,远程主机会向发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先存储的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

  • 生成公钥/私钥对(连续按四个回车键)
    $ssh-keygen-t rsa

  • 在$HOME/.ssh/目录下,会新生成两个文件:id-rsa.pub和idz_rsa.前者是你的公钥,后者是你的私钥。

  • 拷贝公钥至authorized_keys文件(+主机名)
    $ssh-copy-id hadoop-senior.xiangkun

[xiangkun@hadoop-senior01 /]$ cd ~/.ssh/

[xiangkun@hadoop-senior01 .ssh]$ ls

[xiangkun@hadoop-senior01 .ssh]$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/xiangkun/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/xiangkun/.ssh/id_rsa.
Your public key has been saved in /home/xiangkun/.ssh/id_rsa.pub.
The key fingerprint is:
de:76:78:38:e6:84:74:f1:2c:f8:da:50:9a:be:a4:33 xiangkun@hadoop-senior01.xiangkun
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          .      |
|         . +     |
|        S + o    |
|       o O +     |
|        B X o    |
|      E+ O +     |
|      .o+.o      |
+-----------------+


[xiangkun@hadoop-senior01 .ssh]$ ll

总用量 8
-rw-------. 1 xiangkun xiangkun 1675 7月   4 14:05 id_rsa
-rw-r--r--. 1 xiangkun xiangkun  415 7月   4 14:05 id_rsa.pub

[xiangkun@hadoop-senior01 .ssh]$ hostname
hadoop-senior01.xiangkun

[xiangkun@hadoop-senior01 .ssh]$ ssh-copy-id hadoop-senior01.xiangkun

The authenticity of host 'hadoop-senior01.xiangkun (192.168.111.106)' can't be established.
RSA key fingerprint is da:12:42:76:de:23:3a:01:48:18:cd:9e:60:d6:83:b8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop-senior01.xiangkun,192.168.111.106' (RSA) to the list of known hosts.
xiangkun@hadoop-senior01.xiangkun's password: 
Now try logging into the machine, with "ssh 'hadoop-senior01.xiangkun'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.


[xiangkun@hadoop-senior01 .ssh]$ ll
总用量 16
-rw-------. 1 xiangkun xiangkun  415 7月   4 14:08 authorized_keys
-rw-------. 1 xiangkun xiangkun 1675 7月   4 14:05 id_rsa
-rw-r--r--. 1 xiangkun xiangkun  415 7月   4 14:05 id_rsa.pub
-rw-r--r--. 1 xiangkun xiangkun  422 7月   4 14:08 known_hosts
[xiangkun@hadoop-senior01 .ssh]$ 
### 如何配置 SSH 密钥以实现 root 用户无密码登录 为了使 `root` 用户能够通过 SSH 实现无密码登录,需要完成以下几个方面的操作: #### 1. 创建本地密钥对 在客户端机器上生成一组 SSH 密钥对(公钥和私钥),可以通过以下命令完成: ```bash ssh-keygen -t rsa -b 4096 ``` 此命令会在默认路径下生成密钥文件,默认位置为 `~/.ssh/id_rsa` 和 `~/.ssh/id_rsa.pub`。如果希望自定义保存路径或者更改加密算法,可以在运行该命令时指定参数。 注意,在创建过程中会被询问输入一个可选的密码短语(passphrase),如果不希望每次使用私钥都需要手动输入,则可以直接按回车跳过这一步骤[^3]。 #### 2. 将公钥复制至目标服务器 利用 `ssh-copy-id` 工具把刚刚产生的公钥上传到远程主机上的对应账户目录里去。对于想要让 `root` 账号也具备这种便利性的场景来说,执行如下指令即可: ```bash ssh-copy-id root@<server-ip> ``` 这里 `<server-ip>` 替换为目标 Linux 主机的实际 IP 地址。成功之后再次尝试连接就不必再提供明文形式下的口令了[^1]。 #### 3. 修改SSH服务端配置允许Root用户的Key-Based Authentication 编辑位于 `/etc/ssh/sshd_config` 的配置文档来调整相关设定项。具体而言,找到并确认下列几条记录的状态是否正确设置成这样子的样子: - **PermitRootLogin** 应设为 `prohibit-password`, 这样可以确保 Root 只能通过 Key-based authentication 登录. 或者更严格一点的话, 设定为 `without-password`. - 关闭全局范围内的基于密码的身份验证功能(`PasswordAuthentication`) ,将其值改为 `no`. 最终效果应该是这样的样子: ```conf PermitRootLogin prohibit-password PasswordAuthentication no ``` 最后别忘了重新加载或启动 sshd daemon 来应用新的改动 : ```bash systemctl restart sshd ``` 或者是如果你的操作系统版本较老可能需要用这条命令代替上面那一条: ```bash service ssh restart ``` 以上步骤完成后,你应该已经成功设置了仅限于 key-based authenticaion 方式的 secure shell access 对应你的 debian system 上面去了.[^2] --- ### 注意事项 尽管上述方法确实提高了安全性,但也增加了管理复杂度;因此建议定期审查访问权限列表以及保持良好的备份习惯以防万一丢失重要数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值