モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

SSH エージェントフォワードで多段ログインを実現

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2015/06/10
最終更新最終更新
2017/09/14
記事区分記事区分
一般公開

目次

    フロントからバックエンドまで、幅広い技術をカバーしています。

    SSH-agent は秘密鍵のパスワード入力を省略する目的で使用することができます。実はそれだけではなく、SSH config による多段ログインに相当する機能も提供しています。これを特に SSH エージェントフォワードとよびます。

    ログイン実験

    一段目

    秘密鍵 mykey.pem で認証してログインできるホストが 2 つ存在しています。

    • stp-0001
    • inner-0001 (172.30.3.239)

    ローカル PC に mykey.pem を設置すれば stp-0001 に SSH ログインできます。

    Last login: Tue Jun  9 13:48:02 2015
    
           __|  __|_  )
           _|  (     /   Amazon Linux AMI
          ___|\\___|___|
    
    https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/
    [ec2-user@ip-172-30-0-44 ~]$
    

    このあと inner-0001 にログインしようとしても stp-0001 には mykey.pem が存在しないため失敗します。

    [ec2-user@ip-172-30-0-44 ~]$ ssh 172.30.3.239
    Permission denied (publickey).
    

    ところがローカル PC から stp-0001 にログインするときに以下の二つの設定を行っておけば、stp-0001 にログインしたときの認証情報を inner-0001 へのログインに流用できます。

    • ローカル PC で SSH-agent を起動して秘密鍵を覚えさせておく
    • stp-0001 へのログイン時に ForwardAgent = yes に相当するオプションを付与

    上記設定を行って再度試してみます。

    [ec2-user@ip-172-30-0-44 ~]$ ssh 172.30.3.239
    Last login: Tue Jun  9 14:03:32 2015 from 172.30.0.44
    
           __|  __|_  )
           _|  (     /   Amazon Linux AMI
          ___|\\___|___|
    
    https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/
    [ec2-user@ip-172-30-3-239 ~]$
    

    二段目 (続き)

    ローカル PC で起動した SSH-agent は多段に転送して流用することができます。inner-0002 を追加しました。

    • stp-0001
    • inner-0001 (172.30.3.239)
    • inner-0002 (172.30.3.59)

    通常は inner-0001 から inner-0002 にログインしようとしても失敗します。

    [ec2-user@ip-172-30-3-239 ~]$ ssh 172.30.3.59
    Permission denied (publickey).
    

    ところが「stp-0001 から inner-0001 へのログイン時に ForwardAgent = yes に相当するオプションを付与」しておくとログイン情報が流用できるため、以下のように成功するようになります。

    [ec2-user@ip-172-30-0-44 ~]$ ssh 172.30.3.239 -A
    [ec2-user@ip-172-30-3-239 ~]$ ssh 172.30.3.59
    Last login: Tue Jun  9 14:17:56 2015 from 172.30.3.239
    
           __|  __|_  )
           _|  (     /   Amazon Linux AMI
          ___|\\___|___|
    
    https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/
    [ec2-user@ip-172-30-3-59 ~]$
    

    SSH-agent を利用するための設定

    RLogin (Windows) の場合

    Rlogin の場合は GUI で設定します。設定の「サーバー」→「プロトコル」→「SSH」→「エージェント転送を有効にする」にチェックを入れます。これだけで「SSH-agent の起動して秘密鍵を覚えさせる」および「ログイン時に ForwardAgent = yes に相当するオプションを付与」の両方が実現されます。

    Putty (Windows) の場合

    付属ソフト pagent.exe を起動して常駐させておき、秘密鍵を登録します。これによって「SH-agent の起動して秘密鍵を覚えさせる」に相当する設定が完了します。更に設定から「Connection」→「SSH」→「Auth」→「Allow agent forwarding」にチェックを入れれば「ログイン時に ForwardAgent = yes に相当するオプションを付与」の設定が完了します。

    OpenSSH の場合

    SSH-agent の起動

    次回ログイン時には自動で起動します。初回、または複数の ssh-agent を起動してしまって kill した後に必要な操作です。

    $ ssh-agent > ~/.ssh-agent
    $ ps auxw | grep agent
    ec2-user  2682  0.0  0.0  53064   564 ?        Ss   14:29   0:00 ssh-agent
    ec2-user  2684  0.0  0.0 110404   860 pts/0    S+   14:29   0:00 grep agent
    

    新規に起動した場合はエージェントに鍵を登録します。

    $ source ~/.ssh-agent
    $ ssh-add ~/.ssh/mykey.pem
    

    次回以降のログイン時には環境変数の設定ファイルを読み込むだけです。

    $ source ~/.ssh-agent
    

    SSH-agent フォワードの設定

    二つの選択肢があります。

    • ~/.ssh/config に ForwardAgent yes と記載する
    • -A オプション を付与して ssh ログインする (例: $ ssh ec2-user@172.30.3.239 -A)
    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    フロントからバックエンドまで、幅広い技術をカバーしています。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • 使い所が難しいマイナーな運用コマンド
        コマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
        けんちゃんけんちゃん11/1/2022に更新
        いいねアイコン画像0
      • ipコマンドの基本的な使い方
        ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
        こもれびさんこもれびさん2/8/2017に更新
        いいねアイコン画像0
      • プロセス関連のコマンド
        サムネイル画像-7b5901f600
        プロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
        kenken11/27/2021に更新
        いいねアイコン画像0
      • rpmとyumのチートシート
        サムネイル画像-f69c6665b8
        rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
        まるたんまるたん2/2/2022に更新
        いいねアイコン画像0
      • メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識
        メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...
        しおまめしおまめ8/30/2017に更新
        いいねアイコン画像0