SSHは、ローカルネットワーク上で同じユーザー名を持つ2台のコンピュータをどのように処理しますか?

SSHは、ローカルネットワーク上で同じユーザー名を持つ2台のコンピュータをどのように処理しますか?

たとえば、誰かがルーターの背後にあるローカルネットワーク上のコンピュータのbobアカウントにアクセスしたい場合は、単に次のように入力します。

$ ssh -p xx [email protected]`

しかし、sshローカルネットワーク上の2台のコンピュータが同じユーザー名を持つ可能性をどのように処理しますか?システムAのユーザーbobとシステムBの他のユーザーbobを区別するフラグはありますか?それともsshエラーが発生しますか?

答え1

ssh他のホストでユーザー名を繰り返すにはなぜ注意を払うべきですか?確かにこのようなことが起こると予想されます。ヒント:rootユーザーはどこにでもいます。そうではありませんか?

したがって、あなたの質問に対する答えは次のとおりです。ssh他のすべてと同じ方法でアクセスします。問題のホストと話すまでどのユーザーが参照されているか気にしないでください。

上記の単純化された拡張:

最初に起こるのは、sshクライアントがリモートサーバーと会話を試みることですssh。通信チャネルが開かれると、クライアントはそれが既知のホストであるかどうか(例:エントリが存在するかどうか~/.ssh/known_hosts)を確認し、不明なホストであるか、無効な資格情報を持つ既知のホスト(たとえば、ホストキーが変更された場合)で正しく処理します。 )。

これで、すべての作業が完了しssh、サーバーとクライアント間の通信回線が正しく開かれたので、クライアントはサーバーに「ユーザーを認証したいbob」と言います。もちろん、サーバーはbobネットワーク自体にのみ興味があります。

答え2

私はGordon Davidsonのコメントがあなたの誤解を正確に指摘していると思います。

私はここに根本的な誤解があると思います。 sshは、接続するコンピュータを決定するためにユーザー名を使用しません。単に指定された宛先IPアドレス(名前で可能)とTCPポート番号に接続します。 NAT ルーターによってローカル コンピューターにリダイレクトできますが、そうであれば、ユーザー名ではなく IP とポート番号に基づいて行われます。 。

SSH標準インストールの場合、これは100%真です。 SSHに接続すると、 [email protected]他のホストでユーザー名が見つかりません。

ただし、example.com接続が別のコンピュータにリダイレクトされる可能性があります。時々、システムはssh最初に接続を許可してから、ユーザー名に基づいてリダイレクトすることがあります。ただし、これは標準のSSH動作ではなく、ターゲットはサーバーに完全に設定されているリダイレクトルールによって異なります。

答え3

実際の質問に関して:

しかし、SSHは、ローカルネットワーク上の2つのシステムが同じユーザー名を持つ可能性をどのように処理しますか?システムAのユーザーbobとシステムBの他のユーザーbobを区別するフラグはありますか?それともsshでエラーが発生しますか?

デフォルトでは、すべてのLinuxシステムはユーザー、グループ、およびパスワードを3つのファイルでローカルに管理します。

  • /etc/password

    $ head -4 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    user1:x:1001:1001::/home/user1:/bin/bash
    
  • /etc/shadow

    $ head -4 /etc/shadow
    root:$1$jmJYUghS$AxysSW9MzG6AmmweysZsi1::0:99999:7:::
    bin:*:17110:0:99999:7:::
    daemon:*:17110:0:99999:7:::
    user1:!!:17717:0:99999:7:::
    
  • /etc/group

    $ head -4 /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:
    user1:x:1001:
    

このファイルには実際の数値が含まれています。ファイルの次の行で確認できます/etc/password

    user1:x:1001:1001::/home/user1:/bin/bash

これは、1001、1001のユーザーID(UID)およびグループID(GID)と同じです。このディレクトリのホームディレクトリを一覧表示すると、user1そこにも同じ番号が表示されます。

$ ls -lnd /home/user1
drwx------ 4 1001 1001 4096 Jul 12 00:05 /home/user1

メモ:上記のコマンドではls、数値を表示するように指定します。そうでない場合、デフォルトは名前を表示することです。

$ ls -ld /home/user1
drwx------ 4 user1 user1 4096 Jul 12 00:05 /home/user1

SSHはどうですか?

ssh別のサーバーに接続してログインしたユーザーが含まれている場合:

$ ssh [email protected]

特定のユーザーに対して、そのサーバーにローカルに保存されている「詳細」を認証しています。 SSHの使用は通常、プライベート/公開鍵ペアを使用してssh

サンプルキーペアファイル
$ ls -l ~/.ssh/id_rsa*
-rw------- 1 root root 1675 Jul 21 00:50 /root/.ssh/id_rsa
-rw-r--r-- 1 root root  394 Jul 21 00:50 /root/.ssh/id_rsa.pub

この場合、sshSSH鍵ペアのユーザー個人部分を使用して「秘密」をリモートサーバーに送信するとき、サーバー上にあるのは鍵ペアの公開部分であり、サーバーはそれを使用してユーザーがユーザーであることを確認します。実際、あなたが言う人はまさにあなたです。

たとえば、秘密鍵の部分は次のようになります。

私のラップトップ
$ ssh-keygen -l -f ~/.ssh/id_rsa
2048 SHA256:HvNN38AS9H7tIHaaE+51lqv6bgL7AmyDdqHIZIyBimg root@centos7 (RSA)

sshこのユーザーがキーペアを使用できるクライアントを探している場合:

リモートサーバーX
$ ssh-keygen -l -f ~user1/.ssh/authorized_keys
2048 SHA256:HvNN38AS9H7tIHaaE+51lqv6bgL7AmyDdqHIZIyBimg root@centos7 (RSA) 

キーマッチに注意してください。

関連情報