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.


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.


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 ...

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.