web-dev-qa-db-ja.com

sshが既知のホストをHost / ipだけでなくHost / ip:portに一致させる方法は?

ファイアウォールの背後に2台のマシンがあり、sshポートが2201と2202に転送されています。

私が

ssh Host -p 2201  

私はマシンを信頼するかどうかを尋ねます、私はそう言います、それは〜/ .ssh/known_hostsに追加されます

その後私は

ssh Host -p 2202  

~/.ssh/known_Host:1にこのIPのエントリが既にあるため、許可されません(開始時にファイルが空だったため、1行目は前回のssh実行で追加されたものです)。

これはCentOS 5.4で発生します。

他のディストリビューション(私はArchを試してみました)では、sshがknown_hostsをポートに一致させるように見えるため、同じホスト/ IPの複数のポートに複数のフィンガープリントを問題なく取得できます。

CentOSでこれと同じ動作を得るにはどうすればよいですか?

man ssh_configには何も見つかりませんでした(または少なくとも指紋チェックを無効にしない限り)。

一時的な解決策を見つけました。 known_hostsファイルに同じIPのエントリが複数ある場合、何かが間違っていると結論する前に、それらすべてをチェックします。しかし、私はこれが解決策であることを本当に嫌っています。

7
Prody

CentOS 5に付属するバージョンのOpenSSHは、known_hostsのポート番号をサポートしていません。これを機能させるには、新しいバージョンをビルドしてインストールする必要があります。

~/.ssh/config

ホストfoohost-2201 
ホスト名foohost.domain.tld 
#これは、OpenSSH 5で使用される形式に準拠している必要があります。
 HostkeyAlias "[foohost.domain.tld ]:2201 "
ユーザーユーザー名
ポート2201 

そして真剣に、アップグレードします。

6
user1686

OpensshクライアントがHost + portベースのエントリをサポートしていない場合は、これを使用します。

ディレクティブ 'GlobalKnownHostsFile'はmisusedにして、ファイアウォールで保護された2台のマシン(ここではアリスとボブ)のそれぞれに異なるファイルを指定することができます。ただし、これらの2つのファイルは不明なキーを受け入れるときに書き込まれないため、事前にaliceまたはbobのいずれかの正しいホストキーを使用して準備する必要があります。

設定するのは本当に楽しいことではありませんが、一度設定すると機能します。

これまでの私の回避策は 'StrictHostKeyChecking no'で、ssh-agentがキーを転送したり、ポートを転送したりできません(opensshを使用するとブロックされます)。

私の.ssh/configは最近までこのように見えました:

Host hoppingstation
        Hostname loginhost.somewhere.net
        User me
        LocalForward 2201 alice.somewhere.net:22
        LocalForward 2202 bob.somewhere.net:22
Host alice
        Hostname localhost
        Port 2201
        User root
        ForwardAgent yes
        GlobalKnownHostsFile /home/me/.ssh/known_hosts_alice
Host bob
        Hostname localhost
        Port 2202
        User root
        ForwardAgent yes
        GlobalKnownHostsFile /home/me/.ssh/known_hosts_bob
4
chris

私の解決策;詳細なホスト情報を~/.ssh/configに追加します。

Host <someidentifier>
    Hostname ip.add.re.ss
    StrictHostKeyChecking no
    User username
    Port 2201

Host <someotheridentifier>
    Hostname ip.add.re.ss
    StrictHostKeyChecking no
    User username
    Port 2202

その後、ssh someidentifierなどを指定しなくても-pを実行できます。

1
cpbills