Passwordless sftp issue

Hello Experts,

I am trying to setup passwordless sftp from one of linux box to solaris box.

I have generated key-pair and below is the permissions of the respective files.

drwx------. 2 sftpuser sftpuser 4096 Dec 17 23:57 .ssh

drwx------. 2 sftpuser sftpuser 4096 Dec 17 23:57 .
-rw-r--r--. 1 sftpuser sftpuser  609 Dec 17 23:57 id_dsa.pub
-rw-------. 1 sftpuser sftpuser  668 Dec 17 23:57 id_dsa
-rw-r--r--. 1 sftpuser sftpuser  220 Dec 17 23:45 known_hosts
-rw-------. 1 sftpuser sftpuser 1675 Dec 17 23:44 id_rsa
-rw-r--r--. 1 sftpuser sftpuser  401 Dec 17 23:44 id_rsa.pub
drwx------. 5 sftpuser sftpuser 4096 Dec 17 23:40 ..

I copied id_rsa.pub using sftp to my solaris box and while trying to connect using public key it is still asking for password as shown in below snapshot.

bash-3.00$ sftp -o IdentityFile=id_rsa.pub sftpuser@IP
Connecting to IP...
sftpuser@IP's password:

Am I missing something here? Are there any configs that needs to be made for password less ssh to work..

Thanks in Advance for your kind help..

You don't copy the public key to the remote side, you append it to authorized_keys.

If still problem exists, run

ssh -vv user@IP

and post the output here.

Hi All,

Problem still persists even after appending public key to authorized_keys.

Here is the output of ssh -v

bash-3.00$ ssh -v sftpuser@IP
Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090704f
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Rhosts Authentication disabled, originating port will not be trusted.
debug1: ssh_connect: needpriv 0
debug1: Connecting to IP [IP] port 22.
debug1: Connection established.
debug1: identity file /export/home/nxtusr1/.ssh/identity type -1
debug1: identity file /export/home/nxtusr1/.ssh/id_rsa type 1
debug1: identity file /export/home/nxtusr1/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-Sun_SSH_1.1
debug1: Failed to acquire GSS-API credentials for any mechanisms (No credentials were supplied, or the credentials were unavailable or inaccessible
Unknown code 0
)
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: Peer sent proposed langtags, ctos:
debug1: Peer sent proposed langtags, stoc:
debug1: We proposed langtags, ctos: i-default
debug1: We proposed langtags, stoc: i-default
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: dh_gen_key: priv key bits set: 128/256
debug1: bits set: 996/2048
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'IP' is known and matches the RSA host key.
debug1: Found key in /export/home/nxtusr1/.ssh/known_hosts:14
debug1: bits set: 1063/2048
debug1: ssh_rsa_verify: signature correct
debug1: newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: done: ssh_kex2.
debug1: send SSH2_MSG_SERVICE_REQUEST
debug1: got SSH2_MSG_SERVICE_ACCEPT
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: Next authentication method: gssapi-with-mic
debug1: Failed to acquire GSS-API credentials for any mechanisms (No credentials were supplied, or the credentials were unavailable or inaccessible
Unknown code 0
)
debug1: Next authentication method: publickey
debug1: Trying private key: /export/home/nxtusr1/.ssh/identity
debug1: Trying public key: /export/home/nxtusr1/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /export/home/nxtusr1/.ssh/id_dsa
debug1: Next authentication method: password
sftpuser@IP's password:

How did you generate the public key using what protocol?
Can You please paste initial 2 lines of your public key?

Hi,

I used rsa.

Here is first two lines of public key.

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtvWvGQMIpwuUxaMEShLkxw1BiAo9MHlrMI6rfjM8C+bfhzMxk7wXvtX/6M5Q3qLRxtb8YRgow9p81IJ7geDqbf3tETPh5G8NF6h8OkdfSssUC5phEic8D7tXXN+UM+jBj8aN
KunjAfXFiXzHRW1FHy6T5RDOHBdnZtXgaEI

do you have the authorized_keys at your destination??

$HOME/.ssh/authorized_keys?

Yes..It is availalbe in .ssh folder on my server A(i.e server from which I am trying to connect to server B)

bash-3.00$ pwd
/export/home/.ssh
bash-3.00$ ls -ltr authorized_keys
-rw-------   1 usr1 usr       402 Dec 18 13:54 authorized_keys
bash-3.00$

change the permission to 644. for the authorized_keys file

Do a checksum on the :

  • authorized_keys file @ destination
  • public key @ Source

Hi,

Many thanks for your feedback.

I have changed the permissions.

cksum is also giving the same output on both servers for public key and authorized_keys file respecitively.

But problem still persists :frowning:

sometimes SSH version problem might make a different.
if you want to continue to troubleshoot.

  • you can try to copy the public key to different user in the same machine or another linux machine
  • make sure the user is not locked (sometimes when you setting up passwordless, it will get locked due to multiple failure attempt)
  • Try to use DSA key
  • increase the key size from 1024 to 2048

hope these can help :slight_smile:

Don't. Relaxing the original permissions would just add a new reason for ssh/sftp to fail.

Thanks jlliagre for highlighting, I have mixed up with the public key permission, however, I have just tested with the permission for 644 and 600 on the authorized_keys, both are working.

Indeed. That might depend though on the sshd version and its settings.

@sai_2507 Is a password set to the sftpuser account on the remote server ?

Yes Password is set for the sftpuser on remote server. I am able to login using password.

Below are some of the settings in .sshd file on remote server. Do I need to change any of these settings?

PasswordAuthentication yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

What are the contents of /etc/ssh/sshd_config on the remote server?

Thanks for your reply.

Here is the contents of sshd_config on remote server

[root@IP ~]# more /etc/ssh/sshd_config
#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h
#ServerKeyBits 1024

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes

# GSSAPI options
#GSSAPIAuthentication no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
#UsePAM no
UsePAM yes

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
#PermitTunnel no
#ChrootDirectory none

# no default banner path
#Banner none

# override default of no subsystems
Subsystem       sftp    /usr/libexec/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       ForceCommand cvs server