環境

クライアント側

sw_vers

ProductName:	macOS
ProductVersion:	11.5.1
BuildVersion:	20G80

ホスト側

cat /etc/lsb-release 

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

セットアップ手順

Ubuntu (ホスト) 側にopenssh-serverをinstall

もとからsshに関係するやつは入っていたらしいが,ホストになるためのものがそろってはないのでインストール.

apt-get updateapt-get upgradeは適宜.

sudo apt-get install openssh-server

IPアドレスを固定.

省略

秘密鍵と公開鍵をクライアント側で生成.

カレントディレクトリに鍵が生成されるので~/.sshに移動しておく.

cd ~/.ssh

鍵の生成

ssh-keygen -t rsa -f id_rsa_linux

-f XXXでファイル名を指定できる.ファイル名を指定しないとデフォルトのid_rsaとして生成される.自分はgithubですでにsshを生成していたので,上書きされないようにファイル名を指定した.

一つの公開鍵秘密鍵で複数の場所に接続できるみたいだが,なんとなく分けてしまった.

  • id_rsa: 秘密鍵
  • id_rsa.pub: 公開鍵

公開鍵をホスト側に渡す.

色々なやり方があるみたいだが,自分は確実なUSBメモリを使った移動を行った. その後それをMacからLinuxのDesktopに移動し,authorized_keysに公開鍵を登録した.

初回

ホスト側 (操作される側) で

mv Desktop/id_rsa_linux.pub .ssh/authorized_keys    # ファイル名を変えて移動

自分の環境では空っぽの.sshディレクトリが作成されていたのでmkdirをしていない.

2回目以降

ホスト側 (操作される側) で

cat Desktop/id_rsa_linux.pub >> .ssh/authorized_keys    # 追記

接続が確認できたら,Desktopに置いてある公開鍵を削除.GUIで削除してもいいし,CUIでrmとかで削除してもOK.

.ssh内にconfigファイルを作成

vimで作成してもOK.自分はすでに別の接続先へのconfigを書いていたのでただ単にテキストエディタを開いて追記した.

Host linux
  HostName <IPアドレス>
  User <USER名>
  Port 22
  IdentityFile ~/.ssh/id_rsa_linux

こう設定すると,クライアント側 (操作する側) から

ssh linux

で接続できる.

それぞれの意味

  • Host XXX: ssh XXXで接続するための名前.
  • HostName: 接続先のアドレス.物によってはグローバルでもできるが,今回は同じLAN内なのでIPアドレスを指定.
  • User: ホスト側 (操作される側) のユーザー名.新しくUserを追加しているサイトも散見されたが,自分はすでにあるユーザー名を指定した.
  • Port: ポート番号.sshは基本22なのでわかりやすさのため,22.
  • IdentityFile: 公開鍵が収納されている場所.

ちなみに

configを設定しなくても毎回ベタ打ちすれば接続はできる.

このコマンドがさっきconfigを作成したときと同じことをベタ打ちしたもの.

ssh <USER名>@<IPアドレス> -i ~/.ssh/id_rsa_linux -p 22

どちらでも接続できた.

参考

  • はじめてのssh
    • Linuxが多分別のものであったが,とてもわかりやすかった.
    • Linuxが違うのでしょうがないことにここでは,sshが入ってるかどうかみたいな部分やそれをインストールするコマンドがわからなかったが,全体の流れを掴むのにとても役立った.
  • SSHの設定手順(Ubuntu18.04)とWindowsからのアクセス確認手順
    • クライアントがWindowsではあったが,Ubuntuのバージョンが同じだったので参考になった.ここで,どのパッケージが入っていて,どのパッケージが入っていないかなど学んだ.
  • ssh接続の基本(公開鍵認証方式) - Qiita
    • authorized_keysの登録方法について学んだ.