Tag Archives: erro

Erro com scp – [ksh: scp: not found. lost connection]

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 [email protected]:/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" [email protected]:/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

Suse Linux: Arquivos de lock do yast

O yast é um aplicativo existente na distribuição Suse Linux que oferece uma série de funções administrativas.

Usando o yast já me deparei com a fato dele simplesmente travar. Bem, o que fazer então?

1 РAbrir outra conex̣o com o servidor

2 – Procurar pelo processo:

# ps -ef |grep -i yast|grep -v grep
root     11082 11027  0 17:22 pts/1    00:00:00 /bin/bash /sbin/yast
root     11104 11082 10 17:22 pts/1    00:00:02 /usr/lib/YaST2/bin/y2base menu ncurses --nothreads
#

3 – Matar os processos:

# kill [PID]

No exemplo do caso acima:

# kill  11082 11104

4 – Verificar se os processos cairam:

# ps -ef |grep -i yast|grep -v grep
#

Feito isso, eu posso tentar usar o yast de novo então? Ainda não. É preciso mais um passo antes disso:

5 – Remover os arquivos de lock caso existam.

Após o kill,, os arquivos de lock podem permancer no diretório /var/run. Podem haver dois deles ou apenas um. Os arquivos de lock:

/var/run/zypp.pid

/var/run/yast.pid

É preciso remover estes arquivos para que possa-se utilizar o yast novamente.