bash: /home/user/.ssh/authorized_keys: Esse arquivo ou diretório não existe

11

Crie uma chave ssh:

$ ssh-keygen -t rsa P ""

Movendo a chave para a chave autorizada:

$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

bash: /home/user/.ssh/authorized_keys: No such file or directory
sknit
fonte
Mesma pergunta, por que você precisa adicionar a chave ao seu próprio host?
Braiam 16/05
@Braiam Eu fiz isso quando meu diretório pessoal estava na unidade de rede. Isso me permitiu ssh em qualquer máquina que montou essa unidade. Então eu não estava chocando com meu próprio anfitrião.
FDinoff 16/05

Respostas:

13
bash: /home/user/.ssh/authorized_keys: No such file or directory

Um elemento do caminho /home/user/.ssh/não existe; o shell ( bash) verifica o redirecionamento ( >>) antes de executar o comando ( cat). Se /home/userexiste e você tenta o seguinte:

cat $HOME/.ssh/id_rsa.pub >> $HOME/test_this

Agora você receberá:

cat: /home/user/.ssh/id_rsa.pub: No such file or directory

Como esse arquivo não pode estar naquele lugar, se /home/user/.ssh/não existisse, para começar.

Você está seguindo algumas instruções, possivelmente pulando alguns bits. Para criar o diretório:

mkdir $HOME/.ssh
chmod 700 $HOME/.ssh

No entanto, id_rsa.pubnão estará lá. Será onde você executou o ssh-keygencomando em primeiro lugar.

Cachinhos Dourados
fonte
6

Certifique-se de estar conectado como o usuário para quem você deseja criar a chave ssh primeiro (ou esteja preparado para modificar os caminhos no comando para o diretório inicial correto).

Em seguida, basta criar o diretório:

mkdir ~/.ssh

Crie o arquivo usando o catcomando que você listou acima. Então não se esqueça de definir as permissões corretamente:

chmod 400 ~/.ssh/authorized_keys

Convém garantir que o diretório .ssh também tenha permissões apropriadas.

111 ---
fonte
1
Como seu último comentário indica, sim, acho que você precisa #chmod 700 ~/.ssh
KCD
6

Se possível, eu sempre incentivo as pessoas a usar a ferramenta de linha de comando ssh-copy-id.

$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-i [identity_file]] [user@]machine

Se você deseja apenas copiar sua chave pública SSH padrão para um servidor remoto, basta executar o seguinte comando:

$ ssh-copy-id user@remoteserver

Eu mostro um exemplo completo real de como usar esta ferramenta nesta seção de perguntas e respostas intitulada: Não é possível compartilhar uma conexão ssh com o rsync .

slm
fonte
0

Isso também pode falhar se, ao criar a chave ssh-keygen, você der um nome de arquivo a ela. Digitei um nome my-ssh-file-namee ele escreveu a chave em /Users/MyUserNamevez da .sshpasta. Se você deixar o nome do arquivo em branco, ele gravará .sshconforme o esperado.

Francisco Corrales Morales
fonte
ou, é claro, você pode especificar a gravação da chave personalizada na pasta .ssh diretamente:-f ~/.ssh/custom-key-name
parliament