
UbuntuサーバにSFTPユーザーを作成してアクセスした
こんにちわ。ICTLINKの池田です。
タイトルについて、EC2インスタンスで検証しました。
OS…Ubuntu22.04
1.Ubuntu22.04にSFTPアクセスできるようssh-rsaを有効化する
SSHサービスにてssh-rsaはデフォルトで無効化されたようです。
そのため、まずは有効化の設定が必要です。
Teraterm以外のssh接続できるクライアントでアクセスします。
今回はコマンドプロンプトを用います。
ssh -i "秘密鍵のパス" ubuntu@"ホスト名またはIPアドレス"
sudo -i
# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# sed -i '1s/^/PubkeyAcceptedAlgorithms=+ssh-rsa\n/' /etc/ssh/sshd_config
# systemctl restart ssh.service
# systemctl status ssh.service
Active:active(running)になっていることを確認する

2.SFTPユーザーを作成しパスワードを設定する
今回はユーザー名・パスワードともにsftp-userとします。
# useradd sftp-user
# passwd sftp-user
3.ファイルを読み書きするディレクトリと公開鍵を配置するディレクトリをそれぞれ作成する
sftp-userの作業ディレクトリは/home/sftp-user/
公開鍵の配置は/home/sftp-user/.ssh/とする。
# mkdir /home/sftp-user
# chown root:root /home/sftp-user
# chmod 755 /home/sftp-user
# mkdir /home/sftp-user/.ssh
4.秘密鍵と公開鍵を作成する
鍵は/home/sftp-user/.ssh/に配置する。
こちらの記事が参考になりました。
# ssh-keygen -t rsa
Enter file in which to save the key (/root/.ssh/id_rsa): /home/sftp-user/.ssh/id_rsa
後はEnterを押します。

5.秘密鍵をクライアント側に配置する
ユーザー名ubuntuでアクセスするため、先ほど作成した秘密鍵の所有者を一度ubuntuに変更する。
# chown ubuntu:ubuntu /home/sftp-user/.ssh/id_rsa
/home/sftp-user/.ssh/id_rsaをクライアント側へコピーする。

/home/sftp-user/.ssh/id_rsa.pubの所有者をsftp-userに変更する。
# chown -R sftp-user:sftp-user /home/sftp-user/.ssh

6./etc/ssh/sshd_configを編集する。
# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.backup2
# nano /etc/ssh/sshd_config
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp←sftpでChrootさせる場合に設定する
Match user sftp-user←sftp-userについての設定
ChrootDirectory /home/sftp-user←ルートディレクトリを指定
X11Forwarding no←X11転送を使用しない
AllowTcpForwarding no←TCP転送を許可しない
ForceCommand internal-sftp←sftpでのみアクセス可能
PasswordAuthentication yes←パスワード認証有効化
AuthorizedKeysFile /home/sftp-user/.ssh/id_rsa.pub←認証に用いる公開鍵のパスを指定

7.再起動する。
# systemctl restart ssh.service
SFTPでsftp-userとしてアクセスできることを確認する。

終わりに
ssh-rsaがデフォルトで無効化されていたことで手こずりました。
今後はTeratermを卒業しコマンドプロンプトの使用を推奨します。