我/etc/passwd
通过运行usermod -s
来更改我的 shell 进行编辑。 (chsh
不起作用,因为它会提示输入密码;我们使用密钥进行 SSH。)
当我断开连接并重新连接时,更改不会生效。我sshd
也重启了,还是没有。
答案1
我用的是ControlMaster
,而且我实际上并没有断开连接。
ControlMaster
是一个 SSH 配置选项,它使连接保持打开状态一段时间,并且可以通过同一连接多路复用 SSH 会话(这可以避免速度缓慢的密钥交换)。但是,如果您从 shell ^D,然后重新运行ssh
,你还没有杀死原来的连接。
重新启动sshd
只会重新启动侦听过程:任何正在进行的会话都保持活动状态,因此也不会重新启动连接。
显然启动新的 shell 不会重新检查/etc/passwd
更改。
解决方案就是终止连接:ssh <hostname> -O exit
,然后重新登录。