MacのSSHを使い始める|最初の接続で確かめておきたい設定

mac sshで調べる人は、2つの立場のどちらかにいます。Macから別のサーバへ入りたいのか、Macを外から入れるようにしたいのか。この2つは設定する場所が違うので、混ざったまま手を動かすと通らなくなります。この記事では立場を分けて、それぞれ最初の接続が通るまでと、通ったあとに整えておくことを並べます。

Macには最初からSSHが入っている

追加で入れるものはありません。ターミナルを開いて ssh -V と打てば、入っている版が出ます。現行のMacでは OpenSSH 10.3 系が標準で入っており、ここで確かめた版が、この先の手順で使えるコマンドの範囲を決めます。

版を先に見る意味は、古い手順書との食い違いを避けることです。たとえばDSAの鍵は、この版ではもう作れません。-t dsa が通らないのは環境が壊れているからではなく、規格の側が退いたからです。同じ理由で、鍵の種類の既定も変わっています。

出ていく側と受ける側で、使うものが分かれます。出ていく側は ssh コマンドと ~/.ssh/config です。受ける側は、システム設定の「共有」と /etc/ssh の下です。同じMacが両方を兼ねることもありますが、設定する場所が別なので、いま自分がどちらの話をしているかは常に意識します。

出ていく側と受ける側で、向いている使い方が違う

どちらの立場から始めるかは、やりたいことで決まります。並べて比べると迷いません。

出ていく側から始めるのは、借りているサーバの中で作業する場合です。相手の設定は済んでいることが多く、手元で鍵と接続先の条件を整えれば終わります。準備する場所が手元だけなので、うまくいかなかったときに調べる先も手元だけです。始めやすいのはこちらです。

受ける側から始めるのは、自宅や職場のMacに外出先から入りたい場合です。開く操作は1か所で済みますが、そのあとに決めることが増えます。誰が入れるのか、どこまで読めるのか、外からの経路をどう作るのか。ここを決めないまま開くと、外から見える口を開けたまま放置することになります。順番として、まず同じネットワークの中で1回通してから、経路の話に進みます。

出ていく側として使うときの4ステップ

別のサーバに入る側は、やることが決まっています。実際の手順を4段にまとめた記録があります。

接続するまで

1./.ssh ディレクトリの作成 2.秘密鍵ファイルを移動 3./.ssh/config ファイルを作成 4.サーバーに接続できるか確認 出典: qiita.com

この並びが要点を押さえています。先に置き場所を作り、鍵を置き、接続先の条件を書いて、最後に試す。逆から始めて「とりあえず繋いでみる」形にすると、通らなかったときに原因の候補が4つ残ります。

始める前に手元に揃っているべきものも決まっています。接続先のホスト名、ログインするユーザー名、ポート番号、そして秘密鍵です。このうち1つでも不明なら、手を動かす前に接続先の管理者か管理画面から取ります。ここを推測で埋めると、あとの切り分けが全部無駄になります。

mkdir -p ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
ssh -v [email protected]

最後の -v は、うまくいかなかったときのために付けます。どの設定ファイルを読み、どの鍵を順に試したかが行として出るので、原因が手元にあるのか相手側にあるのかがその場で分かります。

受ける側にするときの設定

自分のMacに外から入れるようにする場合、入り口を開く操作は1か所です。Appleの案内は、必要なことを次のように書いています。

「リモートログイン」をオンにして、SSH(Secure Shell Protocol)またはSFTP(SSH File Transfer Protocol)を使って別のコンピュータからMacにアクセスします。 出典: support.apple.com

システム設定を開き、サイドバーで「一般」をクリックし、「共有」に進んで「リモートログイン」をオンにします。同じ画面に、見落とすと後で悩む項目が2つあります。

1つは「アクセスを許可」です。すべてのユーザにするか、選んだユーザだけにするかを決められます。自分しか入らないなら、自分のアカウントだけを選びます。もう1つは「リモートユーザのフルディスクアクセスを許可」です。オフのままにすると、入ったあとで書類やデスクトップの下が読めず、権限の問題なのか設定の問題なのかが分からなくなります。

打つべきコマンドも画面が教えてくれます。「リモートログイン: オン」の下にSSHのコマンドが表示されるので、ホスト名を調べ直す必要はありません。まず同じネットワークの中から1回つないで、通ることを確かめます。ここで通れば、残りは経路の話だけに絞れます。

最初の接続で失敗する3つの型

うまくいかないときの原因は、たいてい3つのどれかです。

1つ目は権限です。~/.ssh が700、秘密鍵が600になっていないと、クライアント側が読み込みを拒否します。エラーの文面に権限の話が出ないまま現れることもあるので、最初に見ます。

2つ目は相手が起きていないことです。ふたを閉じたノート型のMacは応答しません。スリープに入らない設定か、ネットワークからの接続で起きる設定になっているかを確かめます。受ける側をMacにするときは、この点が最も多い失敗の型です。

3つ目は鍵の取り違えです。秘密鍵を相手に置いてしまい、公開鍵を手元に置いたままになっている形です。拡張子の付いていないファイルが秘密鍵で、.pub の付いたものが公開鍵です。渡すのは後者だけです。

成功の目安もはっきりしています。パスワードも鍵のパスフレーズも聞かれずにプロンプトが出たら、そこから先は普段のシェルと同じです。最初の1回が通った時点で、覚えるべきことの大半は済んでいます。

鍵で入る形に切り替える

パスワードで1回入れたら、次は鍵に替えます。公開したポートには自動の試行が絶えず来るので、当てられない長さの鍵に替えるだけで、大半が無効になります。

手元で鍵を作り、公開鍵を相手の ~/.ssh/authorized_keys に足します。Macには ssh-copy-id が /usr/bin に入っているので、パスワードでまだ入れる状態なら、これに運ばせるほうが失敗が少ないです。手で貼る場合に気を付けるのは1点で、鍵の1行を途中で改行させないことです。エディタの折り返しで改行が入ると、見た目が同じでも認証は通りません。

パスフレーズを付けた鍵は、接続のたびに入力を求められます。これを避けるために空にするのではなく、~/.ssh/config に次の2行を書きます。UseKeychain はmacOS向けの項目で、既定は no です。

Host *
  AddKeysToAgent yes
  UseKeychain yes

これで初回に入れたパスフレーズがキーチェーンに入り、次からは聞かれません。鍵を空にする必要は無くなります。AddKeysToAgent は読み込んだ鍵を動いている ssh-agent へ預ける指示で、yes のほかに ask や confirm も書けます。鍵を使うたびに確認を出したい場合は confirm にします。

パスワードでの入り口を閉じる

鍵で1回入れることを確かめたら、パスワードの認証を止めます。順番を逆にすると、鍵の設定が間違っていた場合に入り口が両方閉じます。

Macで止める場合、書き換える場所には決まりがあります。実際に設定した記録は、置き場所と名前の付け方を次のように書いています。

Macの/etc/ssh/sshd_config.d 配下に、既存の設定の 後ろ に読み込まれる設定を置きます。ファイル名は辞書順で並ぶため、例として Apple 標準の 100-macos.conf より後に来る名前(例: 101-mysetting.conf)にします。 出典: zenn.dev

本体の sshd_config を直接書き換えるより、この形のほうが安全です。OSの更新で本体が置き換わっても、自分の設定は別のファイルとして残ります。名前の数字を100より大きくするのは、Apple標準の設定より後に読ませるためです。

止めたあとは、必ず別の窓からもう一度入って確かめます。いま開いている接続は設定を変えても切れないので、通らなくなっていても気付きません。確かめる前に本体から離れると、入れない機械が1台できます。

設定ファイルで接続先を1か所にまとめる

接続先が3つを超えたら、~/.ssh/config に区画を作ります。ホスト名とユーザー名とポート番号と鍵のパスを覚えさせておけば、短い呼び名1つで入れます。

Host work-api
  HostName api.example.com
  User deploy
  Port 2222
  IdentityFile ~/.ssh/id_ed25519_work
  IdentitiesOnly yes

このファイルには1つだけ規則があります。同じキーワードが複数の区画で当たったとき、後の行が上書きするのではなく、先に見つかった値が採用されます。Host * の区画をファイルの先頭に置くと、その下の個別の指定は1つも効きません。個別を上、全体向けの既定を下に並べます。

IdentitiesOnly yes を添える理由もはっきりしています。これを書かないと ssh-agent に預けた鍵が順に試され、接続先の試行回数の制限を先に超えて切られることがあります。「たまに通らない」という症状は、ここで消えることが多いです。

ターミナルとフォルダを別の窓で開く手間

接続が通り、設定も整うと、困りごとは残った1点に集まります。コマンドを打つ窓と、ファイルを見る窓が別にあることです。処理が作ったファイルを確かめたいのに、文字の一覧だけでは判断しきれず、別のアプリに切り替えて同じ場所を開き直すことになります。

この往復は1回が数秒でも、日に何十回も起きます。フォルダとターミナルとAIが同じ窓にある作りを選ぶと、フォルダを開いた時点でそのフォルダのターミナルが立っているので、開き直す操作が消えます。どこまで機能が入っているかはできることに一覧があります。

席を離れたあとも動かしたままの処理を確かめたい場合は、iPhone・iPadから続きをで、出先の端末からMacのターミナルとフォルダをどう扱うかを説明しています。Mac単体の機能を期限なく無料にして、iPhoneとiPadから触れるところから有料にする区切り方については料金に条件が書かれています。

他のファイル管理との違いを先に見たい場合は他のファイル管理との比較が近道で、残った疑問の多くはよくある質問の側で答えが付いています。

進める順番をもう一度並べると、版を確かめ、置き場所と権限を整え、パスワードで1回入り、鍵に替え、パスワードの入り口を閉じ、設定ファイルに接続先を移す。上から順に片付けると、途中で止まったときに疑う場所が1つに絞れます。

よくある質問

MacでSSHを使うのに、何か入れる必要はありますか?

ありません。OpenSSHが標準で入っているので、ターミナルを開いてそのまま ssh コマンドが打てます。入っている版は ssh -V で出ます。現行のMacでは10.3系が標準で、この版ではDSAの鍵は作れないため、古い手順書の -t dsa は通りません。

自分のMacに外から入れるようにするには、どこを開きますか?

システム設定のサイドバーで「一般」をクリックし、「共有」に進んで「リモートログイン」をオンにします。同じ画面の「アクセスを許可」で、入れるユーザを自分だけに絞れます。書類やデスクトップの下まで読みたい場合は「リモートユーザのフルディスクアクセスを許可」もオンにします。

接続できません。最初にどこを見ますか?

権限から見ます。~/.ssh が700、秘密鍵が600になっていないとクライアント側が読み込みを拒否します。次に相手が起きているかを確かめます。ふたを閉じたノート型のMacは応答しません。それでも分からなければ ssh -v を付けて接続し、どの鍵を試したかを見ます。

パスワードでのログインを止めるときの注意点はありますか?

鍵で1回入れることを確かめてから止めます。Macでは /etc/ssh/sshd_config.d の下に、Apple標準の100-macos.confより後に読まれる名前でファイルを置く形が安全です。止めたあとは、必ず別の窓からもう一度入って確かめます。開いている接続は設定を変えても切れないため、通らなくなっていても気付きません。

記事一覧へ戻る