Mar*_*ter 4 shell bash ssh scp
我正在以 user 身份通过 ssh 登录到远程服务器www-data。www-data服务器上的用户将他的默认 shell 设置为/bin/sh,当我登录时,我的 shell 得到了破折号。然后我可以输入bash并获取bashshell。
我想在 ssh 登录时直接登录 bash。但我不想更改服务器上的默认 shell。我希望我的更改只影响 ssh 会话。
我试图把command="/bin/bash"我的公钥的盈方.ssh/authorized_keys,但还有另外一个副作用:虽然庆典在登录时,可以作为默认的shellscp停止工作。我无法再向 remore 服务器发送 scp 文件或从 remore 服务器发送 scp 文件。
如何在bash不破坏其他应用程序的情况下将 ssh 会话设置为默认 shell?
我在我使用的一个系统上遇到了类似的问题(默认 shell 是bash,我想要ksh93,chsh但不起作用)。
我的解决方案适用于您的情况,是exec从~/.profileDash 读取所需的 shell 。~/.profile除非找不到~/.bash_profile或~/.bash_login(按此顺序,请参阅 Bash 手册),否则Bash 不会触摸。
# in ~/.profile:
if [ "$SHELL" != "/usr/bin/bash" -a -n "$SSH_TTY" -a -x /usr/bin/bash ]; then
export SHELL="/usr/bin/bash"
exec $SHELL -l
fi
Run Code Online (Sandbox Code Playgroud)
SSHSSH_TTY在交互式 SSH 会话中设置,因此在确保 Bash 可用并执行它之前,我们会检查它是否已设置(非空字符串)。我设置和导出SHELL它的情况下,任何其他应用程序的外观,并避免猛砸运行到一个无限循环,由于缺少既~/.bash_profile和~/.bash_login,从而试图执行~/.profile一次。
| 归档时间: |
|
| 查看次数: |
12359 次 |
| 最近记录: |