Como resolver o erro ksh: scp: not found. lost connection na execução do comando scp?
O “not found” parece óbvio e logo penso: “Ahn, é o PATH”.
Tento então executar o comando scp com o PATH completo e o problema continua:
foobar:root> /usr/local/bin/scp teste.txt root@192.168.0.1:/root ksh: scp: not found. lost connection foobar:root>
Para tentar identificar o problema, uso a opção “-v” que irá detalhar o log de execução:
foobar>/usr/local/bin/scp -v "$ARQLOG" root@192.168.0.1:/tmp Executing: program /usr/local/bin/ssh host X.X.X.X, user root, command scp -v -t /tmp OpenSSH_3.9p1, OpenSSL 0.9.7e 25 Oct 2004 debug1: Reading configuration data /usr/local/etc/ssh_config debug1: Connecting to X.X.X.X [X.X.X.X] port 22. debug1: Connection established. debug1: permanently_set_uid: 0/1 debug1: identity file /.ssh/identity type -1 debug1: identity file /.ssh/id_rsa type 1 debug1: identity file /.ssh/id_dsa type -1 debug1: Remote protocol version 1.99, remote software version OpenSSH_4.5 debug1: match: OpenSSH_4.5 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_3.9p1 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-cbc hmac-md5 none debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host '129.214.18.171' is known and matches the RSA host key. debug1: Found key in /.ssh/known_hosts:8 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Next authentication method: publickey debug1: Trying private key: /.ssh/identity debug1: Offering public key: /.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 149 debug1: read PEM private key done: type RSA debug1: Authentication succeeded (publickey). debug1: channel 0: new [client-session] debug1: Entering interactive session. debug1: Sending command: scp -v -t /tmp ksh: scp: not found. debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK debug1: Transferred: stdin 0, stdout 0, stderr 0 bytes in 0.1 seconds debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.0 debug1: Exit status 127 lost connection
O mesmo erro. Pesquisando na web, encontro a resposta na FAQ.
Lendo a FAQ:http://www.openssh.org/faq.html#3.7
“scp(1) must be in the default PATH on both the client and the server.”
“This includes resetting PATH in /etc/profile, PATH in /etc/environment on AIX, or (for 3.7p1 and above) setting PATH or SUPATH in /etc/default/login on Solaris or Reliant Unix.”
O que acontece é que no servidor do SSH (SSH server), não apenas no client onde estava tentando executar o scp, o scp precisa ter seu PATH configurado no default do ambiente do sistema operacional. O arquivo de configuração onde o PATH deve ser incluído varia de unix para unix.
Para solucionar, editar os arquivos de configuração do servidor SSH e incluir o PATH do comando scp. Para AIX, editar /etc/environment, para Solaris o /etc/default/login.
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/local/bin

