ターミナルにSSH認証情報を保存する方法


33

私はMacBookを初めて使い、El Capitanを実行しています。

マシンの使用をPCからMacBookに移行しています。私はPCでPuTTYとSuperPuTTYを長年使用しています。

PCのSuperPuTTYで行ったのと同じように、MacBookターミナルでログイン資格情報を作成してWebサーバーに保存します。

MacターミナルにWebサーバーのログイン認証情報を保存することは可能ですか?

私の全体的な目的は次のとおりです。

Macターミナルに次のコマンドラインログイン資格情報を保存し、ターミナルを介してWebサーバーに接続するために何らかのショートコードを使用する簡単な方法があるかどうかを知りたいです。

ssh -p 2200 root@123.456.789.012
Password: ****************************************************************

5つの異なるWebサーバーを管理および接続するので、ログイン資格情報を整理して整理することで、短時間/高速の接続方法で時間を大幅に節約できます。特に私のパスワードは謎めいた64文字の文字列だからです。


Tammyの編集バージョン3により、明快さと有用性の観点からこれがノックアウトされたため、コメントを削除しました。よくやった!
bmike

回答:


50

公開鍵をリモートマシンにコピーできます。公開キー認証が有効になっていて、公開キーがリモートマシンに存在するssh限り、パスワードを入力しなくてもマシンにアクセスできます。

まず、次のような公開/秘密キーペアを生成する必要があります。

ssh-keygen -t rsa

プロンプトに従います。パスフレーズでキーを保護するかどうかを尋ねられたら、YES!キーをパスワードで保護しないのは悪い習慣です。たまにパスワードを入力するだけでよい方法を紹介します。

すでにキーペアがある場合は、上記の手順をスキップできます。

ここで、sshキーがMacにとして存在すると仮定すると、次のコマンド~/.ssh/id_rsa.pubを実行してリモートマシンにインストールできます。

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

上記の特定のサーバーの例では、コマンドは次のようになります。

cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

root@123.456.789.012このコピーを実行するにはパスワードを入力する必要がありますが、これが最後に行う必要があります。リモートサーバーsshdが公開鍵と秘密鍵の認証を行うように設定されていると仮定すると、ボックスにsshするとき、rootアカウントのパスワードを尋ねる必要はありません。代わりに、鍵のパスワードを尋ねます。これを常に入力する必要のないものにする方法をお読みください。

パスワードの代わりにキーを使用してsshするすべてのマシンに対して上記を繰り返します。

、注意してください誰もあなたのホールドを取得~/.ssh/id_rsaファイルは、このマシンにsshをすることができroot、リモートマシンのパスワードを入力せずに。キーファイルをパスワードで保護することで、キーファイルを使用するためにそのキーのパスワードを知っておく必要があります。ファイルが安全であることを確認してください。Macでディスク暗号化を使用し、ファイルと~/.ssh/ディレクトリのアクセス許可を厳しくしてください。

パスワードを毎回入力しなくてもキーを使いやすくするために、OS Xはssh-agentマシンのバックグラウンドでプロセスを実行します。このエージェントは、最初に使用するときにキーペアをキャッシュするため、たまにパスワードを入力するだけで済みます。Macをスリープ状態にするだけで、再起動しないでください。パスワードを入力せずに長時間移動できます。

以下を実行することで、すべてのSSHキーを事前にキャッシュできますssh-agent

ssh-add

これで、多くの異なるアカウントパスワードではなく、キーパスワードのみを覚えておく必要があります。私は通常、キーパスワードを1Password(所属なし)に保持し、覚えておく必要があるパスワードの数をさらに簡素化します。次に、1Passwordでそれらを調べ、Macを再起動して実行ssh-agentを再起動するという奇妙な時間にターミナルでそれらをカットアンドペーストします。

この質問Terminal.app接続管理ソリューションとリモートマシンへのキーのコピーを組み合わせると、 GUI接続の経験のためにPuTTYに非常に近いものが得られます。


サーバー側で、次のことを確認してください/etc/ssh/sshd_config

PubkeyAuthentication yes

構成で有効になっています(OpenSSHではデフォルトです)。以下を設定することもできます。

PasswordAuthentication no

その間、パスワードベースの認証は無効になり、キーがマシンにアクセスする唯一の方法になります。

構成ファイルに変更を加えた場合は、マシンでsshdを再起動する必要があります。


@IamCに感謝します-この答えは素晴らしいもので、きっとうまくいくでしょう。私は私が見つけることができるかどうかを確認するために、この朝マックチャンネルで、ここでスタック交換アカウントを作成し、迅速かつ容易なターミナルで、あるいは何かMac上でログイン資格情報を保存する方法を。そうすることは非常に複雑であり、私にとって実行可能な解決策ではないようです。理由は次のとおりです。<more>
タミー

<続き>多数のWebサーバー(全部で5つ)にコマンドラインでアクセスできます。これらのWebサーバーにSSH(PuTTY経由)でアクセスできるデスクトップPCを職場に持っています。私が持っている大規模な(PuTTYを経由して)SSHこれらのWebサーバへのアクセスと私のホームオフィスでラップトップPCを。旅行や現地でのクライアント訪問のためにMacBook Airを購入しました。その特定のニーズに最適です。私は、PC上のPuTTYとSuperPuTTYを使用するのと同じくらい簡単に、サーバーへのSSH接続を行うことを望んでいました。<more>
タミー

<続き>しかし、自宅と職場のPCでPuTTYが動作する方法を変更する必要があるため、パブリック認証キールートを使用できません。Macを私のPCのように動作させるのは大変な作業であるため、Macから接続するにはコピーアンドペーストプロセスを続ける必要があると思います。ご協力ありがとうございました。私のプロセスをよりシンプルにしようとしてくれてありがとう。
タミー

2
@tammy PasswordAuthentication yesはサーバー側に残すことができ、PuTTYはWindowsマシンで常に機能し続けます。これはシナリオではありません。サーバーで両方のタイプの認証を許可できます。PuTTYは、このFWIWのような公開/秘密キー認証もサポートしています。~/.ssh/id_rsa*ファイルをWindowsマシンにコピーし、PuTTYにインポートしてサーバーへの認証を行うことができます。パテは、ボンネットの下に、との接続にまったく同じOpenSSHのライブラリを使用してsshOS X上で
イアンC.

1
ssh-addSierra(OS X 10.12)でも動作します。ありがとう
SaxDaddy

4

sshpassを使用してパスワードを保存できますが、毎回挿入する必要はありません。これは良い習慣ではありません(セキュリティの問題)。

https://gist.github.com/arunoda/7790979の mac os xのインストール手順に従ってください。

sshpassがインストールされている場合 sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

5つのWebサーバーで同じことを行うと、毎回パスワードを挿入する必要がなくなります。


1
私はこれにあまりにも愚かな感じがします。PuTTYとSuperPuTTYを搭載したPCを使用すると、基本コマンドラインから離れすぎたように思います。全体的な目的でOQを編集しました。ご覧ください。
タミー

これで、root @ 123.456.789.012に接続でき、プロセスを自動化したいだけだと思います。あなたは基本的に毎回入力したくないssh -p 2200 root@123.456.789.012Password: **********************
エンツォ

ssh-copy-id標準のOS Xディストリビューションの一部ではありません。
イアンC。

@IanC。brewでインストールしたことを忘れたと思います。私の答えを変更します
enzo

@maetsohを手に入れました。まさにそれがここで達成したいことです。
タミー

1

公開/秘密キーのほかに、.ssh / configファイルを設定して、エイリアス、サーバーごとのユーザー/ポートの無効化、sshオプション、プロキシコマンドなどのsshコマンドの使用を容易にすることができます...

基本的に、sshコマンドで入力できる複雑なものはすべて、このファイルにも含めることができます。


0

私は、PuttyをネイティブアプリケーションバンドルとしてMacに移植しました。したがって、技術的なユーザーでない場合は、macportや端末は必要ありません。

スクリーンショットの詳細はこちら:http : //www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-available.html

乾杯、


Ask Differentへようこそ!質問には必ず直接答えてください。あなたが取り組んでいる製品に言及した場合、それは問題ありませんが、複数の投稿に同じマーケティングの宣伝文句を貼り付けるのではなく、話題にしようとします。
bmike
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.