.ssh / configによる疑似tty割り当てとコマンド実行の指定


13

.ssh/config次のようなコマンドを指定する方法はありますか?

ssh -t remote-host "screen -dR screen_name"

だから私は簡単にリモートscreenセッションにアクセスできますssh remote-hostか?

今私はカスタムスクリプトを使用してこの問題を解決しました:

$ cat ~/bin/sssh 
#!/bin/sh

/usr/bin/ssh -t $1 "screen -dR ab"

~/bin最初に$PATHに留まりますが、柔軟性がなく醜いです。

また、カスタムスクリプトにホストのオートコンプリートを実装する方法を見つけたいと思います。


私が代わる$1$@。次に、ホスト名だけでなく、オプションを追加できます。完了するには、実行してみてください. /usr/share/bash-completion/completions/sshcomplete -F _ssh sssh
Alex Stragies 16/07/17

回答:


17

-tオプションで行うようにttyを割り当てるにはRequestTTY force、ssh構成ファイル(通常は~/.ssh/config)にエントリとして追加します。接続後に常にサーバーでコマンドを実行するにRemoteCommand COMMANDは、エントリを入力します。ここで、COMMANDは接続時に実行するコマンドです。他のオプションについては、を確認してくださいman ssh_config

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name


1

これが最も柔軟な方法だと私は主張します。スクリプトを使用すると、すべて入力に基づいて、パラメータの設定、条件の追加、必要に応じたコマンドの変更を行うことができます。

でコマンドを「強制」する方法はいくつかありますauthorized_keys。しかし、コマンドライン以外からttyの割り当てを強制する方法や、ローカル側の構成ファイルからリモートサーバーにコマンドを強制する方法はわかりません。

私自身、設定ファイルをスキャンし、さまざまなドメインでDNSをチェックし、ターミナルエミュレータのタイトル文字列を設定するスクリプトがあります。ローカルシステムの画面から呼び出します(Ctrl-a g)。


0

注:RemoteCommandOpenSSH 7.6での作業を開始します。以前のバージョン(つまり、現在のdebian 9.9)では、sshクライアントは(少なくともでgit pull)正しく動作しなくなります。

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