回答:
期待してそれを行うことに何の問題もありません。私がやった他の方法もかなり汚いです。スクリプトで、最初に実行したいプロファイルを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ファイルを作成すると、ユーザーのログインシェルが実行される前に実行されるため、ログインする前に「事前設定」タスクを実行できます。与えられた例は、ログインする前にネットワーク共有をマウントすることでした。
個々の〜/ .ssh / rcファイルを使用したくない場合は、/ etc / ssh / sshrcでも同じことができます。特定のユーザー名または特定の識別方法をチェックする簡単なテストにより、他のユーザーがこれが行われていることに気付かないように制限できます。
/ etc / ssh / sshrcは、〜/ .ssh / rcが存在しない場合にのみ供給されるため、2層の複雑さを効果的に実現できます。
.ssh / configを見てください
次に例を示しますhttps://lookherefirst.wordpress.com/2007/12/17/a-simple-ssh-config-file/