配置 ssh 免密登录

背景

从机器 A 使用 ssh 免密登录到机器 B,两台机器的 OS 都是 CentOS。其中机器 B 用作了一台 nodejs 的服务器,已经安装并运行了 sshd 服务,其用户名是 jmmem

我们想要实现在机器 A 上键入 ssh nodejs 就能免密登录到机器 B 的效果

机器 A

生成 ssh 密钥对:

ssh-keygen -t rsa

请确保私钥的读写权限正确:

在这里插入图片描述
使用 scp 将公钥拷贝到机器 B 上,然后在服务器上将公钥的内容追加到 ~/.ssh/authorized_keys 中:

jmmem@nodejs01:~/.ssh$ cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/C/MvGbwCmMgOvjpvBbaiTJWs6Ddiy5/EUbGZPrr2YckdXjoGkMD00bxUp4nxWFFzkB+gJqV2XFtTXhsl5CX4+KZfKH8lD8Q5846u7lFVhjMHCxFAPSgubMq6c5wMZTbJfKj6aa+wcQl5vvZLMZVUQHDNno8cySaDaHoStutMXhH2VyWykt0LZBis8rA35IgC4LloGsIUhuT+PxWb1zSXyp6N10EkHOeill53gGLKA7qJBCmIt+BcQHFv+Na85iaCQbzXL6TneXlU3aWYgr9b/+iRVL45e71l2fgdAgG5Hi4JOXaf/6Z/wksdd4eA5val5bmo/DuPgkG7AoETVnR/ daniel.sun@etx19.jaguarmicro.hpc

在机器 A 上的 ~/.ssh/config 文件中写入如下内容:

Host nodejs
  HostName 10.1.36.67
  Port 22
  User jmmem
  IdentityFile ~/.ssh/id_rsa
  PreferredAuthentications publickey

注意这个配置文件是针对 ssh 客户端的,其 Port 字段指明的是远程 sshd 服务的端口号,而非客户端本身启动 ssh 连接时使用的端口号

机器 B

~/.ssh/sshd_config 输入如下内容(貌似非必须):

StrictModes no
PubkeyAuthentication yes
RSAAuthentication yes
AuthorizedKeysFile /home/jmmem/.ssh/authorized_keys
PasswordAuthentication yes
AuthenticationMethods publickey

重启 sshd 服务:

sudo systemctl restart sshd

请确保目标机器 B 的 home 目录只有当前用户可以读写执行,否则登录会报错:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值