Closed14

Mac miniにサブのMacbook airからssh接続したい

ぱんだぱんだ

最低限のセキュリティ対策だけしたい。

ポートの変更

sshポートの22を変更したほうがセキュリテイ的に安全らしいので変える。

https://qiita.com/welchi/items/a6b2bd2a91e27c0f67f6

この通りやったら書きこみでエラーになってるっぽかった。

https://gist.github.com/yoggy/ddd874cd567aff182426

コピーしたssh.plistを直接編集する。

sudo launchctl load -w /Library/LaunchDaemons/ssh.plist

これがエラーなる。

けどなんかポート変わったぽいからよしとする。

ちなみに、```/etc/services``でデフォルトのsshポートを変更するとgitとかに影響が出るようなのでやめた方がいい。

ぱんだぱんだ

パスワード認証を無効にしたい

パスフレーズをMacのキーチェーンに登録してないのにパスフレーズの入力なしにssh接続できてしまってる。パスワード入力で接続できてしまってるようなのでパスワードによる認証を無効化したい。

/etc/ssh/sshd_configを編集するといいらしい

#PasswordAuthentication yes これを
PasswordAuthentication no こう

でsshdを再起動

sudo launchctl stop com.openssh.sshd

macのsshdを再起動はこれでいいらしい。もしくはシステム設定のリモート共有を一回オフにしてもう一度オンでもいいらしい

だが、パスワード認証が無効にならない

公開鍵認証も有効にしてみる

PubkeyAuthentication yes

だけど無効にならない

ChallengeResponseAuthentication no

これ追加でできた

ぱんだぱんだ

sshキーのパスフレーズをキーチェーンに保存する

この通りにやればおk

https://qiita.com/rihib/items/9b1f611619695cbf68a0#ssh接続時にパスフレーズの入力を省略したいとき

sshで接続してgit pushしたらパスフレーズを求められてpushできなかった。

これは接続先のマシンのキーチェーンにパスフレーズが保存されているため。

sshでつないでgit pushしたければローカルのsshキーを接続先でも使うsshエージェント転送を設定すれば良さそう。

ぱんだぱんだ

外出中にもsshで接続できるようにしたい

よく考えれば192.168から始まるようなプライベートIPだと同じネットワークに接続されていないと接続できない。

同じネットワークに繋いでいない場合、

  • グローバルIPに対して接続する
  • ポートフォワーディング設定

といった方法があるらしいが、そういえばCloudflareでssh トンネル的なことができて便利みたいなのを聞いたことがあった気がする。

ぱんだぱんだ

Macのsshエージェントを再起動する

sudo launchctl stop com.openssh.sshd

ストップだけど再起動するらしい

ぱんだぱんだ

リモート接続先でgitを使うのにssh鍵が必要だが、パスフレーズを設定しているとローカルからではどうやっても知り得ないので別の鍵を使わないといけない。

ローカルで生成した鍵をGitHubに登録しておきエージェント転送でリモート接続先で使えるようにする必要がある。

ただ、ssh-agentに登録された複数の鍵を全て使ってgit操作してくれるのかが謎。

ssh-agentに登録されている鍵を全部試すということはしてくれない。

全部試してくれないというか一つ試して疎通ができればそれを使ってしまうので複数のGitHubアカウントを使っている場合、そっちのアカウントでアクセスしないでほしいみたいな状態になる。

やっぱり、GitHubアカウントを分けて運用すべきでない。

sshエージェントをssh-add -Dで一旦全て削除しておき、リモート接続先で使いたいssh鍵のみを登録しておけばうまくいった。

リモート接続先で複数のssh鍵を使いたいみたいなのはめんどくさそうなのでやらないほうが良さそう。

リモート先で使いたいssh鍵をエージェントに登録したうえでエージェント転送をしてリモート先でssh鍵を使うという使い方ならGitHubにちゃんと鍵が登録されていれば問題ないはず。

複数の鍵、GitHubアカウントを使い分けるのはめんどくさいのでやらないほうがよかったなと反省。

ぱんだぱんだ

とりあえず、同じネットワーク内ならssh接続して開発するところはできたのであとは外出先からのグローバルなssh接続方法。

ぱんだぱんだ

Cloudflare

Cloudflare Tunnelを使うことでリモートマシンと接続元マシンを安全かつ簡単につなぐことができる。ただCloudflareで管理されているドメインが必要。

ぱんだぱんだ

Tailscale

ちょうどOpensshの脆弱性の話題でTailscaleやCloudflare Tunnelの話をよく見かける。Cloudflare以外にもTailscaleはよく目にしていたので調べてみたらこっちの方が簡単にssh接続できそうだったので使ってみる。

https://dev.classmethod.jp/articles/tailscale-office-to-home-ssh-raspberry-pi/

上記の記事がわかりやすかった。

めちゃ簡単にsshつながった。最初からTailscale使っとけばよかった。

つながったけどリモートマシン上でgit使う時にパスフレーズ求められてpullやpushができない。いわゆるリモート接続先での多段sshができない

sshエージェント転送をTailscaleでの接続でも使いたい。

普通にssh -A user@xxxxみたいにして接続すればいいのか。

ぱんだぱんだ

なんだか最初からTailscaleを使っておけば同じネットワークだろうが外出先だろうが簡単にssh接続できた気がするがsshについていろいろ勉強になったから良しとする。

ぱんだぱんだ

外からリモートマシンの電源を入れたい

意気揚々と外出先のコワーキングスペースからTailscaleでssh接続したところ接続ができない。いろいろ調べて気づいたのだがリモートマシンがスリープ状態であれば接続できない。素人ムーヴすぎて恥ずかしい。

ということで外からリモートマシンをスリープから起こさないといけない。これにはWake-on-Lan(WoL)という技術を使ってリモートマシンにマジックパケットを送ってあげれば実現できるらしい。

それでみなさん眠っていたラズパイを踏み台として使ってたんですね、納得。

いろいろ調べた結果踏み台経由でWoLする以外にもスマホアプリからでもWoLできるらしいので試してみる。RemoteBoot WOLというやつ。

割と古くからありそうで今でも現役なのかがわからない。

ぱんだぱんだ

WoLできないので常時起動の方向で

スマホ用のWoLアプリがあったのでインストールして使ってみたがスリープ解除できない。そもそも外部からWoLするにはルーターに穴あけもしくはVPN繋ぐ必要がある、たぶん。

TailscaleのiOSアプリがあってスマホもデバイス登録できたのでスマホからTailscale経由でWoLできるんじゃないかと思ったのだができない。あれこれ調べててもしかしたらWoLは無線経由じゃできないのかも。ちょっとWoLの仕組みまで追ってないのだけど。ネットワーク知識ないからわからん。

有線接続して試すかとも思ったのだが、外でssh繋いでいじりたいケースはそんなに多くない、というかワーケーションしたいだけなのでそのときだけスリープさせないで常時起動でいい気がしてきた。

ということで、Mac miniのスリープ設定を解除して、ディスプレイだけオフになるようにした。これで、外出先で使いたい時はそのまま放置して出かければいいんじゃないだろうか。

家にいる時は寝る前とか長期離席のときにスリープもしくはシャットダウンすればまあ今までの使い方とあんまり変わらないし。

あとは、たとえば一週間旅先で自宅Macいじるために常時起動させておくのにどのくらい電力消費するのかがまったくわからないけどそんなにかからないと信じる。

だめなら、有線接続してWoL試してみる。まあ、でも有線接続するだけならやるか、、

このスクラップは5ヶ月前にクローズされました