私のオフィスのコンピュータにアクセスするには、現在次のことを行っています。
me@home:~$ ssh unix.university.com
me@unix:~$ ssh unix.department.univeristy.com
[email protected]:~$ ssh office-machine.department.university.com
me@office-machine:~$ echo "This is very annoying"
このプロセスを自動化する簡単な方法はありますか?最後にコマンドを使用できますか?
答え1
はい、SSH ProxyCommandとnetcatを使用してこれを行う良い方法があります。
.ssh/configにこのようなものを置きます。
Host *.department.university.com
User me
ForwardAgent yes
ProxyCommand ssh unix.university.com nc %h %p
その後、ジャンプ/要塞ホストunix.university.comを使用して.department.university.comサーバーに直接ログインします。 unix.university.com スタンザを指示する必要があるかもしれません。
動作方法を説明するリンクは次のとおりです。http://backdrift.org/transparent-proxy-with-ssh
この手法では、次のように書くことができます。
ssh unix.department.university.com
すべてが簡単に表示されます。 rsync、scpなどのツール(sshスタック内のすべての項目)も透過的に機能します。
答え2
ログイン後、SSHクライアントを使用してリモートシステムでSSHを実行できます。
ssh -t unix.university.com \
ssh -t unix.department.univeristy.com \
ssh -t office-machine.department.university.com
(これを呼び出しに含めた理由-t
は、私のコンピュータで試したときにsshでエラーが発生したためです。stdinは端末ではありません。お使いのコンピュータは異なる場合があります。)
最後のシェルを終了するとプロセスが連鎖終了するため、繰り返しCtrl-D入力する時間が節約されます。
答え3
OpenSSH 7.3では、sshはこの問題を解決するために-J
コマンドラインフラグと対応する設定ProxyJump
オプションを追加しました。
SSHを介して接続するホストをカンマ区切りリストとして提供します-J
。たとえば、
ssh -J unix.university.com,unix.department.university.com \
office-machine.department.university.com
答え4
同じユーザー名を使用してサーバーAからサーバーBにssh
Host target
HostName <serverB_hostname>
ForwardX11Trusted yes
LogLevel verbose
User <username>
ProxyCommand ssh <username>@<serverA_hostname> -W %h:%p