Mar*_*ter 4 shell bash ssh scp
我正在以 user 身份通过 ssh 登录到远程服务器www-data
。www-data
服务器上的用户将他的默认 shell 设置为/bin/sh
,当我登录时,我的 shell 得到了破折号。然后我可以输入bash
并获取bash
shell。
我想在 ssh 登录时直接登录 bash。但我不想更改服务器上的默认 shell。我希望我的更改只影响 ssh 会话。
我试图把command="/bin/bash"
我的公钥的盈方.ssh/authorized_keys
,但还有另外一个副作用:虽然庆典在登录时,可以作为默认的shellscp
停止工作。我无法再向 remore 服务器发送 scp 文件或从 remore 服务器发送 scp 文件。
如何在bash
不破坏其他应用程序的情况下将 ssh 会话设置为默认 shell?
我在我使用的一个系统上遇到了类似的问题(默认 shell 是bash
,我想要ksh93
,chsh
但不起作用)。
我的解决方案适用于您的情况,是exec
从~/.profile
Dash 读取所需的 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
一次。