Ubuntu 16.04 LTSサーバーで、次のことを行いたいと思います。
Ubuntu 16.04.3 LTSの新しくインストールしたバージョンで作業しているため、すべてがデフォルトの工場出荷時の状態になっています。
この質問 と回答を注意深く読みましたが、解決策を見つけることができませんでした。
Sudo特権を持つnonrootadmin
ユーザーを作成しました。
nonadminsftp
グループのメンバーであるsftpaccess
ユーザーを作成しました。 /home/nonadminsftp/
ディレクトリは次のようになります。
$ ls -al ~nonadminsftp
total 24
drwxr-xr-x 3 root root 4096 Oct 25 00:52 .
drwxr-xr-x 5 root root 4096 Oct 24 22:29 ..
-rw-r--r-- 1 nonadminsftp sftpaccess 220 Sep 1 2015 .bash_logout
-rw-r--r-- 1 nonadminsftp sftpaccess 3771 Sep 1 2015 .bashrc
drwxr-xr-x 3 nonadminsftp sftpaccess 4096 Oct 25 00:50 ftp
-rw-r--r-- 1 nonadminsftp sftpaccess 655 May 16 13:49 .profile
/etc/passwd
のそれぞれのエントリは次のとおりです。
nonrootadmin:x:1000:1000::/home/nonrootadmin:/bin/bash
nonadminsftp:x:1002:1002::/home/nonadminsftp:/usr/sbin/nologin
/etc/sshd/sshd_config
ファイルに加えた変更は次のとおりです。
PermitRootLogin no
#PasswordAuthentication no
AllowUsers nonrootadmin nonadminsftp
Subsystem sftp internal-sftp
Match group sftpaccess
#ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
#ForceCommand internal-sftp
私が見た解決策は、これらの行の3つのコメントを外すことを提案しますが、私はそれを発見します
PasswordAuthentication no
は、nonadminsftpユーザーがパスワードで接続できないようにします。
$ sftp [email protected]
Permission denied (publickey).
Couldn't read packet: Connection reset by peer
ChrootDirectory %h
は、rootadmin以外のユーザーがまったく接続できないようにします。
$ ssh [email protected]
packet_write_wait: Connection to 12.34.56.78 port 22: Broken pipe`
ForceCommand internal-sftp
は、非rootadminがSSHアクセスを取得できないようにします。
$ ssh [email protected]
This service allows sftp connections only.
Connection to mydomain.com closed.`
これらの行はコメントアウトされています:
しかし:
/home/nonadminsftp
ディレクトリにchroot
edされていません私が行方不明になっているのは何ですか?
前もって感謝します
@muruのおかげで、次の設定が機能するようになりました。
PermitRootLogin no
PasswordAuthentication no
AllowUsers nonrootadmin nonadminsftp
Subsystem sftp internal-sftp
Match group sftpaccess
# The following directives only apply to users in sftpaccess
PasswordAuthentication yes
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
以前にnonrootadmin
をsftpaccess
グループに追加しました。このユーザーをグループから削除した後...
$ Sudo gpasswd -d nonrootadmin sftpaccess
$ getent group ftpaccess
ftpaccess:x:1002:nonadminsftp
... nonrootadmin
はSSHを使用できるようになりました。