Com relação à sua pergunta real:
However, how does ssh handle the possibility of two machines on the local network having the same username? Is there a flag to differentiate between user bob on machine A vs a different user bob on machine B, or does ssh throw an error?
Todo sistema Linux, por padrão, gerencia seus próprios usuários, grupos & senhas localmente em 3 arquivos.
-
/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:
Dentro desses arquivos estão os números reais. Você pode vê-los nesta linha do arquivo /etc/password
:
user1:x:1001:1001::/home/user1:/bin/bash
Qual é o ID do usuário (UID) & ID de grupo (GID) de 1001 & 1001. Se fôssemos listar o diretório home deste user1
, você verá esses mesmos números lá também:
$ ls -lnd /home/user1
drwx------ 4 1001 1001 4096 Jul 12 00:05 /home/user1
OBSERVAÇÃO: No comando acima, estamos instruindo ls
a exibir o número. O padrão é exibir os nomes de outra forma:
$ ls -ld /home/user1
drwx------ 4 user1 user1 4096 Jul 12 00:05 /home/user1
E o SSH
Quando você ssh
para outro servidor e você inclui o usuário para efetuar login como:
$ ssh [email protected]
você está se autenticando em relação aos "detalhes" armazenados localmente sobre um determinado usuário. Com o SSH, é um pouco mais complicado, já que você normalmente estará usando um par de chaves privada / pública para fazer login em um servidor via ssh
.
arquivos de pares de chaves de exemplo
$ 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
Nesse cenário, quando você ssh
envia "segredos" para o servidor remoto, usando a parte privada do par de chaves SSH do usuário, no servidor está a parte pública do par de chaves, que é o servidor pode usar para confirmar que você é de fato quem você diz que é.
Aqui, por exemplo, a sua parte da chave privada:
meu laptop
$ ssh-keygen -l -f ~/.ssh/id_rsa
2048 SHA256:HvNN38AS9H7tIHaaE+51lqv6bgL7AmyDdqHIZIyBimg root@centos7 (RSA)
Se olharmos para um cliente em que esse usuário pode ssh
usar um par de chaves:
servidor remoto X
$ ssh-keygen -l -f ~user1/.ssh/authorized_keys
2048 SHA256:HvNN38AS9H7tIHaaE+51lqv6bgL7AmyDdqHIZIyBimg root@centos7 (RSA)
Observe a correspondência das chaves.