Linux でリモート接続による認証方法として、下記の2点があります。
パスワード認証
公開鍵認証
どちらにもそれぞれ、使用する利点がありますが、外部に公開されているサーバにアクセスするのであれば、
公開鍵認証を用いるほうがより安全に運用することが出来ると思います。
サーバにて、root権限になり、下記のコマンドを実行し、ユーザの追加とパスワードの設定を行う。
# adduser user
# passwd user
もし、すでに公開鍵認証を行っている場合
vi /etc/ssh/sshd_config
AllowUsers にアカウントを追加します。
sshd デーモンを再起動します。
まずは、公開鍵の作成を行います。
例:Ubuntu 16.04 で行った場合。
ssh-keygen
ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9QYeJpsJo1BWcGzUB6bspNYaMB0FeKhEmR/Kqz0eh9M user@ubuntu
The key's randomart image is:
+---[RSA 2048]----+
|..oo*B=.o. |
| +o=.+oo. . |
|o.*.o.* ..= |
|.o = * o O + |
| . = o S . o |
| . + o . |
|..+ E |
|. o+ |
| ... |
+----[SHA256]-----+
上記作業で、 /home/user/ ディレクトリ以下に /.ssh ディレクトリが作成され、
id_rsa 秘密鍵
id_rsa.pub 公開鍵
が作成されました。
次に、作成した公開鍵を、転送する場合、2つの方法があります。
現時点で、パスワード認証を行っている場合、コマンドを実行することにより公開鍵を転送する
すでに公開鍵認証を行っている場合、
1.コマンドを実行することで公開鍵を転送
ssh-copy-id -i ~/.ssh.id_rsa.pub user@remote-host
2.すでに公開鍵認証を行っている場合
公開鍵認証にて許可されているアカウントにて、対象サーバにscpで公開鍵ファイルをコピーする
scp ~/.ssh/id_rsa.pub kyoka-user@remote-host:/tmp
公開鍵認証にて許可されているアカウントにて、対象サーバにsshでログインする
ssh kyoka-user@remote-host
対象ユーザのホームディレクトリへ、公開鍵をコピーする
su - user
cp /tmp/id_rsa.pub ./
.sshディレクトリを作成し、アクセス権の設定を行う
mkdir .ssh
chmod 700 .ssh
cat id_rsa.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
別のセッション(例えば、TeraTerm を起動)にて、公開鍵認証が正しく行えるかを確認します。