centos:ssh_tunnel
文書の過去の版を表示しています。
SSHでトンネル経由でログイン
-t オプション
外部のネットワークから特定のLAN内のサーバにアクセスしたい。 ただし、特定のLANにはプロキシ(踏み台)サーバを経由しないといけない。
通常なら、プロキシサーバにSSHログインして、目的のサーバにSSHログイン。
[root@client ~]# ssh 1.2.3.4 -p 2222 root@1.2.3.4's password: Last login: Wed Nov 26 13:14:24 2014 from 1.3.4.5 [root@adm ~]# ssh db Last login: Wed Nov 26 13:16:41 2014 from adm [root@db ~]#
でも、SSHコマンドって、『SSH サーバ “コマンド”』で、対象サーバ内でコマンドの実行ができる。
[root@client ~]# ssh 1.2.3.4 -p 2222 "free" root@1.2.3.4's password: total used free shared buffers cached Mem: 8196648 8034528 162120 0 278368 5567024 -/+ buffers/cache: 2189136 6007512 Swap: 4194300 0 4194300
それなら、『SSH サーバ “SSH サーバ”』でSSHログインできるのでは?
[root@client ~]# ssh 1.2.3.4 -p 2222 "ssh db" root@1.2.3.4's password: Pseudo-terminal will not be allocated because stdin is not a terminal.
失敗。 『仮想端末が割り当てられていない』ということだそうな。 では、SSHのマニュアルを参考に。
SSH (1)
http://www.unixuser.org/~euske/doc/openssh/jman/ssh.html
-t
強制的に仮想端末を割り当てます。これはリモートマシン上で任意の画面ベースのプログラムを実行するとき(たとえば、メニューサービスを実装するときなど)に非常に便利です。複数の-t をつけると、たとえssh がローカル側での端末を持っていない場合でも強制的に仮想端末を割り当てます。
[root@client ~]# ssh -t 1.2.3.4 -p 2222 "ssh db" root@1.2.3.4's password: Last login: Thu Nov 27 17:41:23 2014 from adm [root@db ~]#
できた。 ただし、一般的にはncやProxyCommandを使うことが多いみたい。
nc コマンド
nsを使う場合 ただし、プロキシサーバにncがインストールされている必要がある。
[root@client ~]# vi .ssh/config
Host proxy HostName 1.2.3.4 Port 2222 Host db HostName 1.4.5.6 Port 22 ProxyCommand ssh proxy nc %h %p
[root@client ~]# ssh db root@1.2.3.4's password: root@1.4.5.6's password: Last login: Wed Nov 26 13:12:48 2014 from adm [root@db ~]#
-W オプション
ncを使わない(-Wオプションを使う)場合 ただし、SSHのバージョン(~CentOS5.3?)によっては-Wオプションが使えない。
[root@client ~]# vi .ssh/config
Host proxy HostName 1.2.3.4 Port 2222 Host db HostName 1.4.5.6 Port 22 ProxyCommand ssh proxy -W %h:%p
[root@client ~]# ssh db root@1.2.3.4's password: root@1.3.4.5's password: Last login: Wed Nov 26 13:16:01 2014 from adm [root@db ~]#
centos/ssh_tunnel.1417079538.txt.gz · 最終更新: 2025/02/16 13:50 (外部編集)