Entre com o nome de usuário e a senha do FTP do Linux


23

Qual é o comando para efetuar login no FTP, tudo com uma linha?

ftp username:password@my.domain.com

diz:

Senha necessária para o nome de usuário: senha


2
Use man ftppara descobrir, ou talvez ftp --help. Não se esqueça que ftppode significar diferentes utilidades ....
Basile Starynkevitch

2
ftp ftp://username:password@my.domain.com

1
Você também deve se lembrar que a linha de comando de um determinado processo é visível para todos os outros usuários no sistema. Portanto, fornecer sua senha como parte da linha de comando pode ser um grave problema de segurança.

Respostas:


8
ftp -nv yourftpserver.com

então user your_username ouuser anonymous


Postei esta resposta, pois ftp ftp://username:password@my.domain.comnão funcionou para mim.

Usage: { ftp | pftp } [-46pinegvtd] [hostname]
   -4: use IPv4 addresses only
   -6: use IPv6, nothing else
   -p: enable passive mode (default for pftp)
   -i: turn off prompting during mget
   -n: inhibit auto-login
   -e: disable readline support, if present
   -g: disable filename globbing
   -v: verbose mode
   -t: enable packet tracing [nonfunctional]
   -d: enable debugging

2
Isso não é tão útil porque requer uso interativo. Eu poderia apenas digitar 'ftp user @ YOURServer'.
precisa saber é

3
isso não responde à pergunta
phil294 18/02

7
ftp ftp://username:password@my.domain.com

Você poderia facilmente ter usado ftp --helpembora.


25
O comando mostrado produz: "Nome ou serviço desconhecido". ftp -help não produz nada parecido com ftp :, // nem nome de usuário: senha @.
CW Holeman II

4
Qual versão do Linux você está usando? Também recebo "Nome ou serviço desconhecido" quando tento a sintaxe acima. Estou usando CentOS 6.
Tim Ludwinski

7
Também estou recebendo nome ou serviço desconhecido
Kevin Johnson

6
não funciona para mim, fyi em um ubuntu servidor remoto
user391339

6
Eu também achei ftp -help inútil e o formato que sugerem não funciona para mim no ubuntu 16.
Henry

3

A melhor opção é usar um .netrc junto com algo como gpg para fins de segurança.

Eu escrevi um script de propósito geral para isso, que eu posso enviar posteriormente, mas ele se resume a:

gpg -c .netrc

ou, opcionalmente, com uma senha na linha de comando e um destino de saída:

gpg --passphrase <secretphrase> -o .netrc.gpg -c .netrc

Não mostrado aqui, mas você também pode usar chaves assimétricas (se você as tiver configurado) com o gpg para tornar isso ainda mais seguro.

Então, quando você estiver pronto para fazer login

gpg .netrc.gpg
# or
gpg --passphrase <secretphrase> -o .netrc .netrc.gpg
ftp yourservername
rm .netrc

Um exemplo .netrc:

machine google.com
login <username>
password <secretpassword>

Na verdade, mantenho um hash local e a cópia original desses arquivos em um computador diferente daquele em que uso os arquivos .netrc e verifico o hash do .netrc e o script em que executo, mas isso está acima e abaixo. além da pergunta original do OP.


Esta é a melhor resposta, embora possa ser aprimorada: (1) as credenciais do usuário em uma única linha de comando serão armazenadas no histórico do shell => problemas de segurança. (2) .netrc também funciona sem problemas de segurança gpg =>. Verifique também se o arquivo .netrc tem permissões corretas: chmod 600 .netrc(3) uma função de shell como wrapper em torno da descriptografia, chamada ftp e remoção do .netrc descriptografado seria útil. Obrigado pela sua ótima resposta!
math

Então, em vez da senha do FTP, o usuário precisa digitar a senha do GPG? Além disso, se um invasor tiver acesso de gravação aos seus arquivos pessoais, existem várias maneiras de revelar suas credenciais assim que você as usar. Nesse cenário, o GPG realmente ajuda realmente contra um invasor com acesso somente leitura. O que é realmente raro, eu acho?
Konrad

1

Use netrc . É melhor do que dar a senha na linha de comando.


Esta resposta não merece uma pontuação negativa (embora esteja faltando um exemplo de como fazê-lo).
Peter Mortensen

Eu concordo - no entanto, ninguém nunca mudou isso (e eu não diminuí o voto).
precisa saber é

0

Podes tentar

my_ftp() {
  ftp -i -n <<EOF
    open $HOST
    user "$USER" "$PASS"
    $@
EOF
}

com o qual você pode ligar my_ftp $'ls subfolder\nanothercommand'

Esta solução não é interativa, mas o melhor que pude descobrir

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.