メニュー 閉じる

iPhone iOS の「ショートカット」App で鍵認証方式を使い Linux へSSH 接続する。

iPhone の「ショートカット」機能を使って、「Raspberry Pi OS(Linux)」に鍵認証SSH 接続を試みる。

iPhone iOS の「ショートカット」App で
鍵認証方式を使い Linux へSSH 接続する。

iPhone の「ショートカット」とは。

気が付いたら iOS に追加されていたアプリで、iPhone 内のApp でバッチ処理をするようなイメージの機能です。

例えば、「タイマーを起動して3分セットする。」といったような処理を作成できます。

皆さんはカップラーメンを作る時にiPhone の時計アプリを使って3分計っていると思いますが、
その工程を思い出してみてください。

誰でも以下のような工程になると思います。

  1. 「時計アプリ」を起動する。
  2. 「タイマー機能」を選択。
  3. 「3分」セットする。
  4. スタート。

正直、面倒くさいですよね?

「ショートカット」は、この4つの処理を登録しておき、ワンタップで呼び出せるようにする機能です。

つまり、ラーメンタイマーボタンを作ることが可能なのです。

【iPhone → Raspberry Pi】 パスワードでSSH 接続する。

SSH 経由でスクリプトを実行

このショートカット機能には、ラーメンタイマーを作るだけでなく、
「SSH 接続をして何々を実行する。」という操作も登録できます。
それが「SSH 経由でスクリプトを実行」という操作です。

■ この便利なショートカット機能のひとつ「スクリプティング」内にSSH 接続があります。

呼び出し方。

ショートカットApp を開いて、「✙」ボタンをタップ。

アクションを追加をタップ。

スクリプティング をタップ。

SSH 経由でスクリプトを実行をタップ。

「表示を増やす」をタップ。

SSH 接続の設定と、実行するスクリプトが書けます。
画面下の (再生アイコン)をタップすると、テスト実行できます。

設定内容について。

ホスト:SSH 接続する端末のIP アドレス等を入力。
ポート:SSH 接続に使用するポート
ユーザー:SSH 接続するユーザー
認証:パスワード or SSH キー
パスワード:認証がパスワードならパスワードを入力。SSH キーならキーの種類が表示されます。
入力:実行するスクリプトを入力します。

Raspberry Pi にパスワードでSSH 接続してみる。

パスワードで接続するだけなら、SSH 接続できる環境があれば簡単に試せると思います。

下記の例はSSH 接続して、「ls」コマンドを実行しています。

こんな感じにレスポンスが来ます。

【iPhone → Raspberry Pi】鍵認証SSH 接続する。

iPhone 公開鍵の登録手順について

次にSSH キーを使った鍵認証SSH 接続を試してみたいと思います。

通常の鍵認証SSH 接続と設定方法は同じはずなので、
iPhone の公開鍵を接続先のコンピューターに登録してやればいいと思います。

iPhone の公開鍵を共有する手段が メールとかLine とかのアプリなので、
メールなどで一旦パソコン端末に送信し、その端末からSSH 接続先の端末へ、
Authorized keys を登録するという流れで進めます。

イメージ図

公開鍵の共有

認証を「SSHキー」に切り替えて、その下のSSH キー名をタップします。


SSH キーの項目から、「公開鍵を共有」をタップ。

共有方法の候補から、メールを選択。

公開鍵をメールで任意のアドレスへ送信します。

Raspberry Pi OS への登録

空のテキストファイルを作成し、受信したメールの本文をコピペで貼り付け、
適当な名前で適当な場所に保存します。

iPhone の公開鍵を再現したので、

  • 作成したファイルを
  • SSH 接続先ユーザーホームディレクトリの.ssh フォルダ内に
  • 「authorized_keys」として登録

とすれば良いのですが

Linux であれば「ssh-copy-id」コマンドを使って登録すると、上記の作業を全部やってくれます。

Windows の場合は、OpenSSH に「ssh-copy-id」が無いので、代替コマンド無いかなーっとダメ元でググってみたらよい情報が見つかりました。(というか、一発ヒットでした。)

という訳で、下記のように登録するとクール。

例:

cat iphone_pubkey.txt | ssh uniuni@192.168.3.11 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

分解するとこんな感じで、複数の制御を一回のセッションで終わらせています。

cat <作成したファイル> | (パイプ)
ssh <ユーザー名>@<ホスト名>
 "mkdir -p ~/.ssh && (AND制御演算子)
chmod 700 ~/.ssh && (AND制御演算子)
cat >> ~/.ssh/authorized_keys && (AND制御演算子)
chmod 600 ~/.ssh/authorized_keys"

但し、使えるのは「登録先がLinux の場合」です。
登録先が Windows だとSSH 接続後にシェルが「コマンドプロンプト」になる為、コマンドが見つからずエラーになります。
その場合は、コマンドプロンプトに合わせたコマンドを使うか、直接Windows を操作してauthorized_keys を作成してもOK です。

実行すると、フィンガープリントの件が来て、パスワードを聞かれます。
パスワードを入力すると、登録完了です。

参考:

Windowsでssh-copy-idっぽいことをしたい

Raspberry Pi の方を確認すると、キーが登録されているのが確認できます。

鍵認証接続の動作確認

SSH キーで認証(接続)できました。

正常なレスポンスが返ってきました。

以上です。

Posted in Linux, Raspberry Pi OS

関連投稿

2件のコメント

  1. ピンバック:インターネット経由でWOL する。「プランB」 - .zapping

  2. ピンバック:Windows で SSH 接続する時のまとめ。Windows 10、Windows Server 2016、2019 - .zapping

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です