踏み台サーバー経由のSSHログインは 認証エージェント転送を使おうという話

SSHで認証エージェント転送でのログイン実施

SSH公開鍵認証方式にて踏み台サーバ経由のSSHログインが必要な場合、秘密鍵をHost-A (踏み台サーバー) へ配置したくはありません。かといって Host-Aでわざわざ別途鍵を生成するようなこともしたくありません。

このような場合、認証エージェント転送を利用することで、踏み台サーバでローカルのエージェント情報(秘密鍵情報)を利用して認証することができます。下記へテストした内容を載せていきます。私は macOS の Terminal から実行しましたが、調べた限りではクライアントOSが Windows の場合に利用するSSHクライアント( TeraTerm や Rlogin ) にもエージェント転送機能はありそうでした。

ローカルで エージェントに秘密鍵を登録します。事前に Host-A、Host-B の authorized_keys に 公開鍵を登録しておきます。

[Client ~]$ ssh-add -l
The agent has no identities.
[Client ~]$  
[Client ~]$ ssh-add -k .ssh/id_rsa
Identity added: .ssh/id_rsa (.ssh/id_rsa)
[Client ~]$ 
[Client ~]$ ssh-add -l
4096 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx .ssh/id_rsa (RSA)
[Client ~]$

ssh -A オプションで踏み台サーバへログインします。

[Client ~]$ ssh -A user@Host-A
Last login: Mon Apr  8 09:20:04 2019 from Client
[Host-A ~]$ 

ssh-add -l で鍵を確認するとローカルのエージェント情報が転送されています。この時、Host-A に秘密鍵は配置していません。

[Host-A ~]$ ssh-add -l
4096 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx .ssh/id_rsa (RSA)
[Host-A ~]$ 

このエージェント情報をもって Host-B へログインすることができます。

[Host-A ~]$ ssh user@Host-B
Last login: Fri Apr  5 09:12:58 2019 from 10.10.0.2
[Host-B ~]$
[Host-B ~]$

Windows の OpenSSH

今後 Windows 10 (1809) と Windows Server 2019 には OpenSSH は公式にサポートされることになります。クライアント、サーバーサイドの両方に OpenSSH がインストールされていればSSH公開鍵認証方式でログインし PowerShell での操作が可能です。

OpenSSH in Windows | Microsoft Docs
Installation of OpenSSH For Windows | Microsoft Docs

試しにWindows OpenSSHからエージェント転送テストしましたが Windows から Linux へログインはできますがエージェント転送はできませんでした。Windows側のOpenSSHの署名アルゴリズムが古い為、拒否するようなのですがこれが FIX されるのは OpenSSH_for_Windows_7.9 のようです。( 現在 7.9 は beta )

実際に Windows 10 PowerShell から OpenSSH で CentOS へ接続したした様子

PS C:\Users\ghost> ssh-add -k .\.ssh\id_rsa
PS C:\Users\ghost>
PS C:\Users\ghost>
PS C:\Users\ghost> ssh -A testuser@linuxsvr
warning: agent returned different signature type ssh-rsa (expected rsa-sha2-512)
Last login: Mon Apr  8 08:02:32 2019 from example.com
[testuser@linuxsvr ~]$
[testuser@linuxsvr ~]$
[testuser@linuxsvr ~]$
[testuser@linuxsvr ~]$ ssh-add -l
The agent has no identities.
[testuser@linuxsvr ~]$
[testuser@linuxsvr ~]$ cat /etc/redhat-release
CentOS Linux release 7.6.1810

おわり。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*