無法獲得無密碼(提供 SSH)SFTP 工作
我已經 chrooted sftp 設置如下。
# Package generated configuration file # See the sshd_config(5) manpage for details # What ports, IPs and protocols we listen for Port 22 # Use these options to restrict which interfaces/protocols sshd will bind to #ListenAddress :: #ListenAddress 0.0.0.0 Protocol 2 # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key #Privilege Separation is turned on for security UsePrivilegeSeparation yes # Lifetime and size of ephemeral version 1 server key KeyRegenerationInterval 3600 ServerKeyBits 768 # Logging SyslogFacility AUTH LogLevel INFO # Authentication: LoginGraceTime 120 PermitRootLogin without-password StrictModes yes AllowGroups admins clients RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts yes # For this to work you will also need host keys in /etc/ssh_known_hosts RhostsRSAAuthentication no # similar for protocol version 2 HostbasedAuthentication no # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication #IgnoreUserKnownHosts yes # To enable empty passwords, change to yes (NOT RECOMMENDED) PermitEmptyPasswords no # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Change to no to disable tunnelled clear text passwords #PasswordAuthentication yes # Kerberos options #KerberosAuthentication no #KerberosGetAFSToken no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes # GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes #UseLogin no #MaxStartups 10:30:60 #Banner /etc/issue.net # Allow client to pass locale environment variables AcceptEnv LANG LC_* #Subsystem sftp /usr/lib/openssh/sftp-server # 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 yes Subsystem sftp internal-sftp Match group clients ChrootDirectory /var/chroot-home X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
一個虛擬使用者
root:~# tail -n1 /etc/passwd david:x:1000:1001::/david:/bin/sh
現在在這種情況下,david 可以使用說 filezilla 客戶端進行 sftp,他被 chroot 到 /var/chroot-home/david/。但是,如果我要設置無密碼身份驗證怎麼辦?我嘗試將他的密鑰粘貼到 /var/chroot-home/david/.ssh/authorized_keys 但沒有用,嘗試將 ssh’ing 為 david 到盒子,它在我提供後停止在“debug1:發送 env LC_CTYPE = C”它是密碼,auth.log 中沒有顯示任何內容,可能是因為它找不到 homedir。如果我以 root 身份執行“su - david”,我會看到“無目錄,使用 HOME=/ 登錄”,這是有道理的。符號連結也無濟於事。
我也嘗試過:
Match group clients ChrootDirectory /var/chroot-home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
一個虛擬使用者
root:~# tail -n1 /etc/passwd david:x:1000:1001::/var/chroot-home/david:/bin/sh
這樣,如果我不將 /var/chroot-home/david 更改為 root:root sshd 抱怨所有權或權限模式不正確,如果我這樣做了,david 在使用 sftp 時無法再直接在他的家中上傳/刪除任何內容檔案。
首先,其中的主目錄
/etc/passwd
應該反映未 chroot 的路徑,否則您通常會遇到問題。在這種情況下,sshd
在 chroot 之前檢查授權密鑰,因此它需要使用非 chroot 路徑找到它們。這就是為什麼您的第一次嘗試不起作用的原因。要注意的第二件事:在您的第一個設置下,當 david 登錄時,他開始登錄
/var/chroot-home/david
,但他實際上是 chrooted/var/chroot-home
,這意味著如果他鍵入cd ..
,他可以看到所有其他主目錄(儘管如果權限正確,則看不到它們的內容)。這對您來說可能是也可能不是問題,但要注意這一點是一件好事。如果以上對你沒問題,你可以使用你的第一個 sshd_config,
/var/chroot-home/david
在passwd
文件中設置 david 的主目錄,並添加以下符號連結,以便 david 仍然在他的主目錄中啟動:cd /var/chroot-home mkdir var ln -s .. var/chroot-home
該符號連結將確保您可以使用相同的路徑到達主目錄,無論您是否在 chroot 中。
但是,如果您不希望客戶端看到彼此的主目錄的名稱,則需要 chroot 進入主目錄本身,就像在您的第二個解決方案中一樣。但正如您所見,
sshd
不喜歡那樣(因為各種微妙的原因,給使用者對文件系統根目錄的寫訪問權是危險的)。可悲的是,你在這里大多不走運。對此的一個(kludgy)解決方案是在每個主目錄中創建一個files/
子目錄,並賦予客戶端對它的寫訪問權限。另一種選擇可能是chroot 到/var/chroot-home,並以不同的方式命名主目錄,例如使用使用者ID 號而不是名稱。