web-dev-qa-db-ja.com

特定のディレクトリにSSHで接続する方法は?

サーバーに頻繁にログインしてから、特定のディレクトリにcdします。これら2つのコマンドを1つに簡略化することは可能ですか?

ssh bob@foo  
cd /home/guest

サーバー管理者と一緒にクリアする必要があるので、可能であれば 'foo'の変更は避けたいです。私はbashを使用していますが、他のシェルでの回答も受け入れています。

41
spuder

〜bob/.bash_profileファイルの最後の行としてfooに配置するだけです。

cd /home/guest >& /dev/null

これで、ログインするたびに(SSHを使用するかどうかに関係なく)、cdコマンドが実行されます。 sshをいじる必要はありません。

私はあなたが「可能であれば 'foo'で何も変更しないようにしたい」と書いたことを知っていますが、bob @ fooアカウントがあなたのものである場合、あなた自身の.bash_profileの変更は受け入れられるはずです、いいえ?

24
DanB

これはOpenSSHで動作します:

ssh -t bob@foo 'cd /home/guest && exec bash -l'

最後の引数は、ログインシェルで実行されます。 -tフラグがsshに渡されると、sshは疑似端末を強制的に割り当てます。これは、対話型シェルに必要です。 -lフラグをbashに渡すと、bashが ログインシェル として開始されます。

41
user26112

@EvanTeitelmanのソリューションと同様に、この方法でも実行できます。

$ ssh -t bob@foo "cd /tmp ; bash"

または、もう一方のシェルがわからない場合:

$ ssh -t bob@foo "cd /tmp && exec \$Shell"

またはこのように:

$ ssh -t bob@foo 'cd /tmp && exec $Shell'
17
slm