Como usar o comando openssh sftp com uma chave RSA / DSA especificada na linha de comandos

35

O comando Openssh ssh e scp forneceu uma -iopção de linha de comando para especificar o caminho para a chave RSA / DSA a ser usada para autenticação.

Observando as páginas de manual do sftp, não consegui encontrar uma maneira de especificar a chave RSA / DSA.

Estou procurando uma maneira de iniciar uma sessão sftp que use uma chave RSA / DSA especificada, e não as chaves ~ / .ssh / id_ {dsa, rsa}.

Eu tentei o cliente OpenSSH sftp no Linux ... mas deve ter as mesmas opções em outras plataformas.

Adi Roiban
fonte
2
Especifique qual cliente sftp você está usando em qual plataforma.
26411 dmourati

Respostas:

41

Uma opção potencial é usar sftp -oIdentityFile=/path/to/private/keyfile. Precisa de mais informações para dizer se isso funcionará para você. Parece funcionar no Mac / Linux.

dmourati
fonte
11

Você pode simplesmente usar o -iargumento para seu comando sftp ou ssh.

sftp -i /path/to/private/keyfile ...

Se a opção -i não estiver disponível, você poderá usar a opção -o com uma sintaxe como:

sftp -oIdentityFile=/path/to/private/keyfile ...
slubman
fonte
4
O sftp não tem uma opção -i, que é provavelmente o motivo pelo qual o OP está fazendo a pergunta.
user9517 suporta GoFundMonica
funciona nos meus hosts Linux, mas não no meu laptop Mac, onde a opção -i parece não existir.
Dmourati 26/05
Meus Ubuntu e CentOS anfitriões não têm uma opção -i para sftp
user9517 suporta GoFundMonica
Meu cliente do CentOS faz: [dmourati @ flexo ~] $ cat / etc / redhat-release CentOS versão 5.6 (final) [dmourati @ flexo ~] $ qual ssh / usr / bin / ssh [dmourati @ flexo ~] $ qual sftp / usr / bin / sftp [dmourati @ flexo ~] $ rpm -qf / usr / bin / sftp openssh-clients-4.3p2-72.el5 [dmourati @ flexo ~] $ man sftp [dmourati @ flexo ~] $ man sftp | head SFTP (1) Manual de comandos gerais do BSD SFTP (1) NOME sftp - programa seguro de transferência de arquivos SINOPSE sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path] [-F ssh_config ] [-i identity_file]
dmourati
1
@dmourati: E o meu não [iain @ centos ~] $ ssh / usr / bin / ssh [iain @ centos ~] $ sftp / usr / bin / sftp [iain @ centos ~] $ rpm -qf / usr / bin / sftp openssh-clients-4.3p2-72.el5_6.3 [iain @ centos ~] $ man sftp | head SFTP (1) Manual de comandos gerais do BSD SFTP (1) NOME sftp - programa de transferência segura de arquivos SYNOPSIS sftp [- 1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config] [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S program] [-s subsystem | sftp_server] host sftp [[usuário @] host [: arquivo [arquivo]]]
user9517 suporta GoFundMonica
8

Você pode criar um arquivo de configuração alternativo para a conexão e usar o -Fswitch para dizer ao ssh para usá-lo. crie um arquivo de configuração, por exemplo, ~ / .ssh / config.sftp com o conteúdo

Host remote.host.tld
User RemoteUserName
IdentityFile /path/to/atlernate/identityfile

então chame sftp assim

sftp -F ~/.ssh/config.sftp remote.host.tld
Connecting to remote.host.tld...
Enter passphrase for key '/path/to/atlernate/identityfile':
sftp>

A configuração acima restringe o uso da chave alternativa (quando esse arquivo de configuração é usado) ao usuário RemoteUserName em remote.host.tld.

Dê uma olhada na página de manual do ssh_confg para o uso do arquivo de configuração alternativo

Iain
fonte
Muito obrigado pela sua ajuda! Sua solução fornece uma alternativa limpa aos argumentos da linha de comando. Por enquanto, prefiro passar todos os argumentos via linha de comando, pois já estou usando -oPort = ALT_PORT.
Adi Roiban