Adiciona sua identidade ao servidor remoto, e também cria a árvore ~ / .ssh com as permissões apropriadas, se necessário.
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
Não tenho certeza se a pergunta que estou fazendo está correta, mas basicamente eu queria automatizar esse processo
scp ~/.ssh/id_rsa.pub [email protected]:~/
ssh [email protected]
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
rm id_rsa.pub
chmod go-w ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Então eu pensei em criar um script de shell e colocá-lo no meu .bash_profile assim: function
setup_ssh () {
scp ~/.ssh/id_rsa.pub $1:~/
ssh $1
#the following is happens when connected to the server using ssh
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
rm id_rsa.pub
chmod go-w ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
}
Mas é claro que isso não funciona porque não continua com os comandos, uma vez conectados ao servidor. Existe alguma maneira de continuar os comandos, uma vez que está conectado ao servidor via ssh?
Aqui está uma maneira um pouco diferente que funciona:
setup_ssh() {
cat ~/.ssh/id_rsa.pub | ssh $1 '
mkdir .ssh;
cat >> .ssh/authorized_keys;
chmod go-w .;
chmod 700 .ssh;
chmod 600 .ssh/authorized_keys
'
}
Você também pode se livrar do cat
e ter o shell pipe no seu arquivo id_rsa.pub, mas eu acho que isso é o suficiente para você seguir em frente.
Editar:
A maneira como funciona
Você está basicamente iniciando um novo shell no host remoto para executar os comandos que você passou para ssh
(entre aspas). Quando chega à parte cat >> .ssh/authorized_keys
, nada leu do STDIN ainda, então os dados do cat ~/.ssh/id_rsa.pub
ainda estão lá. cat
lê dados de STDIN e, em seguida, redirecionamos isso para o novo arquivo authorized_keys. Então nós executamos os comandos restantes.