初めてsshを使って他のPCでリモート作業をする際に手こずってしまったので、まとめます!
(詳細は理解していなくて、)とりあえず使えるところまで。
この記事で目指すところ
sshとは通信される側とする側で、安全に通信を行うためのプロトコル。
クライアントの公開鍵を、サーバに事前に教えておくことで、リモートログインを認証してもらうのが目標です。
サーバとクライアント両方でやることがあるので、どちらがどちらか混同しないようにお気をつけくださいませ。
接続元-->クライアント
接続先-->サーバ
私はUbuntu18.04とMacOSを使って通信させました。
どちらも同じ設定方法で、双方向の通信を確認しています。
sshキー公開鍵の作成【クライアント側】
sshキーを作成します。
$ cd ~/.ssh
$ ssh-keygen
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):パスフレーズを入力(入力しないと無しになる)
Enter same passphrase again: パスフレーズを再入力
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
これで秘密鍵と公開鍵ができました。確認すると、
$ ls
id_rsa id_rsa.pub
id_rsa.pub が公開鍵、 id_rsa が秘密鍵です。
今回は公開鍵を使います。秘密鍵は誰にも教えないようにしてください!
続いて、id_rsa.pubの中身をサーバ側に丸々教える必要があります。
ファイルをそのままメールで添付、などしてサーバPCに送ってください。
※間違えて秘密鍵を送らないように注意!
sshキーの公開鍵を認証する【サーバ側】
authorized_keysファイルにクライアントの公開鍵を配置します。
まずは、authorized_keysファイルを作成し、公開鍵(id_rsa.pubの中身)を保存していきます。
以下のようにファイルを開いて、コピペして保存します。
$ gedit ~/.ssh/authorized_keys
続いて、authorized_keysに権限を与えてください。
これで認証完了です!
$ chmod 600 ~/.ssh/authorized_keys
ホスト名とIPアドレスを調べる【サーバ側】
接続したいホスト名とIPアドレスを調べましょう。
$ hostname
xxxx.local
$ ifconfig
ifconfigでずらずら〜っと出てきまして、inetに続く、 「198.168.xxx.x」がIPアドレスです。
また、ログイン時にユーザ名も必要となるので、確認してください。(PCの普段使っているログイン名)
ログインする【クライアント側】
以下のどちらでもログインできます!
$ ssh ユーザ名@ホスト名
$ ssh ユーザ名@IPアドレス
パスワードを聞かれたら、サーバ側で設定したパスフレーズを入力してください。
これで、サーバ側のhomeディレクトリにて作業ができるはずです!
毎回ホスト名やIPアドレスを打つのが面倒なら・・【クライアント側】
configファイルにログイン情報を書き込んで保存しておくことができます!
$ gedit ~/.ssh/config
以下のように内容を書き込みます。
Host hoge #好きな名前
User ユーザ名
HostName ホスト名
ForwardAgent yes
すると、以下コマンドでログイン可能になって簡単!
$ ssh hoge