SSH는 로컬 네트워크에서 동일한 사용자 이름을 가진 두 대의 컴퓨터를 어떻게 처리합니까?

SSH는 로컬 네트워크에서 동일한 사용자 이름을 가진 두 대의 컴퓨터를 어떻게 처리합니까?

예를 들어, 누군가 라우터 뒤의 로컬 네트워크에 있는 컴퓨터의 bob 계정에 액세스하려는 경우 간단히 다음과 같이 입력하면 됩니다.

$ ssh -p xx [email protected]`

하지만 ssh로컬 네트워크에 있는 두 컴퓨터가 동일한 사용자 이름을 가질 가능성을 어떻게 처리합니까? 시스템 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는 로컬 네트워크에 있는 두 시스템이 동일한 사용자 이름을 가질 가능성을 어떻게 처리합니까? 시스템 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) 

키 일치에 주의하세요.

관련 정보