Answers:
期望中这样做没有错。我做过的另一种方法也很脏,使用脚本,先scp您要运行的配置文件,然后ssh进入,运行它并保持连接。
因此,将所有配置文件设置放置在本地文件中.<local username>-<hostname>-init.sh
,然后运行以下脚本登录到远程主机。
#!/bin/sh
[ $# -eq 0 ] && { echo "syntax: $0 <host> [<ssh-option>...]" 1>&2 ; exit 1 ; }
host=$1 ; shift # use any remaining args as ssh options
initfile=".$USER-`hostname`-init.sh"
scp -q ~/.ssh-init.sh "$host:/var/tmp/$initfile"
ssh -t "$@" $host "bash --rcfile /var/tmp/$initfile"
您可以放入配置,.bashrc
并仅在登录时让它们执行。为此,可以通过ssh传递环境变量。
.bashrc
修改
# common stuff
if [ -n "$IAMTHEGREATEST" ]; then
# my personal cool stuff
fi;
# other global stuff
sshd_config
修改:
AcceptEnv ... IAMTHEGREATEST
.ssh/config
修改(客户端):
Host ...
SendEnv IAMTHEGREATEST
.bashrc
修改(客户端):
alias ssh='IAMTHEGREATEST="forsure" ssh'
(未经测试,但应该这样做)
在ssh(1)手册页中,如果创建文件〜/ .ssh / rc,则将在执行用户的登录Shell之前执行该文件,从而使用户有机会在登录之前执行“预设置”任务。 。给出的示例是在登录之前挂载网络共享。
如果您不想使用单个〜/ .ssh / rc文件,则可以使用/ etc / ssh / sshrc进行相同操作。快速检查您的特定用户名或某些识别方法的测试可能会限制其他人甚至没有意识到这一点。
/ etc / ssh / sshrc仅在不存在〜/ .ssh / rc 时才提供,因此您可以有效地实现两层复杂性。
看看.ssh / config
这是一个示例https://lookherefirst.wordpress.com/2007/12/17/a-simple-ssh-config-file/