【ssh免密登录】ssh配置默认端口和指定端口免密登录

·  阅读 112
【ssh免密登录】ssh配置默认端口和指定端口免密登录

前言

     雨后的清晨比较合适写文章啊,今天记录下SSH 指定端口免密登录的配置过程。

ssh 配置免密登陆

     背景:服务器A 免密登陆到服务器B(IP: 192.168.20.201),以下操作已macOS 终端为例,服务器A称为ssh客户端,被登陆的服务器B称为ssh服务器。

  • 服务器A 生成密钥对

     终端中输入如下命令,所有提示均按回车默认

ssh-keygen -t rsa
复制代码

     上述操作会在用户的家目录下生成.ssh目录(默认隐藏), 里面有id_rsa (私钥)和id_rsa.pub(公钥)

在这里插入图片描述

  • 服务器A 上传公钥到服务器B

有三种方式:通过ssh-copy-id ,通过 scp和手动复制,下面介绍前两种; (1)ssh-copy-id , 在服务器A 终端下执行

# username 为服务器B的用户名,192.168.20.201为服务器B的IP
ssh-copy-id -i username@192.168.20.201
复制代码

(2) 通过scp 将 服务器A的公钥(id_rsa.pub) 传输到服务器B的home 目录下, 将公钥追加到服务器B的授权文件authorized_keys文件中,如果没有此目录需自行手动创建,当使用ssh-copy-id 命令时,会自动创建此文件。

#  服务器A 终端下执行
scp ~/.ssh/id_rsa.pub username@192.168.20.201:~/home
# 切换到服务器B 终端,在服务器B执行
cat ~/home/id_rsa.pub >> ~/.ssh/authorized_keys
复制代码
  • 在服务器A上登录服务器B 测试
ssh username@192.168.20.201
复制代码

ssh 配置指定端口免密登陆

     SSH 服务程序默认监听端口是 22,所以常说的ssh免密登陆,是会把密钥信息默认传输到22端口下,但是为了系统安全, 常常会更改默认端口,那么这个时候,配置ssh密钥登录该怎么做呢? 传输公钥时指定端口,命令如下:

# port 为指定的端口
ssh-copy-id -i ~/.ssh/id_rsa.pub -p port 'username@ip'
复制代码

配置后免密登陆不生效

     如上配置后,发现登陆时还是需要密码,怎么回事?去系统授权日志(/var/log/auth.log)中查看详细信息: 提示 “Authentication refused: bad ownership or mode for directory /xxx/xxx” 在这里插入图片描述     此时需要修改授权文件的权限如下:

# 去掉当前用户组对文件的写权限 
chmod g-w /home/username
# 只有拥有者有读、写、执行权限
chmod 700 /home/username/.ssh
# 只有拥有者有读、写权限,authorized_keys默认是自己唯一写权限的
chmod 600 /home/username/.ssh/authorized_keys
复制代码

再进行登录,就不再需要密码了(aly 是我设置的服务器别名) 在这里插入图片描述      还可以通过在ssh命令后面添加调试参数 -vvv查看调试信息 在这里插入图片描述 在这里插入图片描述

免密登陆的原理

在这里插入图片描述

参考链接

www.ruanyifeng.com/blog/2011/1… www.cnblogs.com/hanwen1014/… blog.csdn.net/weixin_3073… jingyan.baidu.com/article/454…

小结

    本文介绍了ssh的密钥登陆方式及原理,ssh还可以用来做端口转发,后面的博客会继续介绍,欢迎回来哦~

分类:
后端
标签:
分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改