ssh構成ファイルを使用してリモートコマンドを実行する


32

入力することなく、サーバーへのsshログインで実行するコマンドをセットアップできるようにしたいと思います。基本的に、私は同等のssh設定ファイルを探しています:

ssh host command

入力する必要があるのは次のとおりです。

ssh host

コマンドが実行されます。

回答:


16

認証済みキーファイルにコマンドを挿入することもできます。(~/.ssh/authorized_keys)。これにより、ファイル内の各キーに対してカスタムコマンドを実行できます。これを使用して、ファイアウォールを介してシェル接続を転送します。その結果、1つのホストにsshできるようになり、ネットワーク内のホストにセッションが自動的に接続されます。authorized_keysエントリは次のようになります。

command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...

より具体的には、リダイレクトは私のgitoliteインスタンス用です。これにより、gitoliteホストを外部アクセスに直接さらすことなく、簡単な外部アクセスが可能になります。詳細については、manページを確認してください。(http://linux.die.net/man/8/sshd


1
これはすごい、これができるとは知らなかった。+1
ブライアンウィ

3
authorized_keysファイルにコマンドを入力すると、rsyncやscpなどが壊れます。次のようなメッセージが表示されます:open terminal failed:not a terminal。また、コマンドが失敗した場合はログインできないことに注意してください。私はこれを難しい方法で発見しました。
ジョンハント

11

あなたがOpenSSHを実行している場合、それは次のようになります~/.ssh/rcされ、ログイン時に実行します


3
された/.ssh/rcクライアントまたはサーバマシン上にありますか?ドキュメントからサーバーのように見えますよね?
ヘビー

1
はい、サーバーマシン上にあります。
コーンスレイヤー

残念ながら、このrcファイルはscreen、「端末に接続する必要があります」というエラーが表示されるなど、実行に失敗したよう
です-davidparks21

10

bashエイリアスを設定できます。

.bashrcファイルに以下を入力します。

alias ssl='ssh some_host run_command'

そうすれば、ホスト名を入力する必要さえありません。

または、複数のホストでこれを実行したい場合(および複数のエイリアスが機能しない場合)、小さなスクリプトを使用します。

kevin@box:~$ cat ssl.sh
#!/bin/sh
ssh $1 some_command
kevin@box:~$

2

.ssh/config fileコマンドを実行するホストに対して、これをコールド解決します。

  RequestTTY yes
  RemoteCommand <some command>

<some command>あなたの命令はどこにありますか。これは、screenまたはtmuxでも機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.