ssh 实现指定用户仅认证不登录
当我们有 ssh 代理代理转发的需求时,就可以在跳板机上做一个仅任认证不登录的用户,用来防止跳板机被以外登录
创建用户
1 | sudo adduser jump |
配置 sshd
先切换到 jump 用户
欢迎信息
vim /home/jump/banner
1 | Ok! You've successfully authenticated. |
创建 authorized_keys
1 | mkdir /home/jump/.ssh && chmod 755 /home/jump/.ssh |
将公钥添加到 authorized_keys 文件中
修改 sshd_config
1 | sudo vim /etc/ssh/sshd_config |
将下面的内容添加到 sshd_config 文件末尾
1 | Match User jump |
重启 sshd
1 | /etc/init.d/ssh restart |
到这里就可以通过正常的 ssh 方式登录 jump 用户了,而且登录时第一行会看到 banner 文件中的内容
修改 shell (禁用登录)
vim /etc/passwd
找到 jump,将最后的 /bin/bash 改为 /bin/false
现在再通过 ssh 的方式登录,会先登录成功,然后紧接着就被关闭连接
到这里就已经基本实现了仅认证不登录的实现
优化部分
去除登录后显示的系统信息登录信息
在登录成功后默认会展示一大堆内容,这些是不需要的,所以如何隐藏它?
很简单,直接在 jump 用户目录下创建一个 .hushlogin 文件即可
1 | touch /home/jump/.hushlogin |
然后再通过 ssh 登录就看不到默认输出的一大堆内容了,就只会看到 banner 文件中的内容
优化显示登录信息
如果只想显示登录信息改如何修改?
还是先按照上面的内容,通过创建 .hushlogin 文件去除默认信息
然后再通过创建 rc 文件
1 | vim /home/jump/.ssh/rc |
将以下内容写入到 rc 文件中
1 | lastlog -u $USER | perl -lane 'END{print "Last login: @F[3..6] $F[8] from $F[2]"}' |
再通过 ssh 登录,就只会看到上一次的登录信息了
- 标题: ssh 实现指定用户仅认证不登录
- 作者: CListery
- 创建于 : 2022-11-15 11:05:16
- 更新于 : 2026-01-23 16:48:26
- 链接: http://clistery.github.io/2022/11/15/ubuntu/ssh-no-login/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论