web-dev-qa-db-ja.com

SSHログイン時にコマンドを自動的に実行する方法は?

Linuxサーバーにログインするたびに、いくつかのコマンドを自動的に実行したい(変数の設定、場所の変更など)

これは、システムの起動時ではなく、ユーザーログイン時に実行する必要があります。

これを行うにはどうすればよいですか?

18
Alasdair

コマンドを~/.bashrcに入れます。そこにあるものはすべて、ログインするたびに実行されます。

Sshを介してログインするときにのみ実行するコマンドが必要な場合(物理的にログインするときは必要ない)、SSH_CONNECTION環境変数の存在をテストし、存在する場合にのみコマンドを実行することができます。

31
David Z

これをすべてのユーザーに適用したい場合は、これを〜/ .bashrcまたは/etc/bash.bashrcに入れてください。

if [[ -n $SSH_CONNECTION ]] ; then
    echo "I'm logged in remotely"
fi
14
Llamageddon

または、sshの呼び出し中に実行するコマンドを指定できます。

$ ssh -t server 'cmd; exec bash -l'

リストの最後のコマンドは、優先シェルでインタラクティブセッションを開始する必要があります。実行するコマンドが多い場合は、SSHサーバーにスクリプトファイルを作成することを検討してください。

6

実は~/.ssh/rcは、システムのユーザーではなく、yoのログイン時に実行するコマンドを追加するのに最適な場所です。

 ~/.ssh/rc
         Commands in this file are executed by ssh when the user logs in,
         just before the user's Shell (or command) is started.  See the
         sshd(8) manual page for more information.
3
brook hong

リモートホストに渡されたコマンドを実行した後のリモートホストへのログイン:

  1. リモートホストで.bashrcを実行します
  2. コマンドラインで渡されたコマンドを実行します(リモートの.bashrcからenvを使用)
  3. リモートホストでbashプロンプトを表示します(エラーがない場合)

    $ ssh user@Host "bash -lc cmd; cmd; ..."

    -lオプションはログインシェルにします(例:.bashrcを実行)

    -cオプションは、bashが実行する明示的なコマンドを提供します

1
clearlight