パスワードを入力せずにSSH経由でファイルをリモートでコピーする方法
SSHは、リモートでコンピュータを管理する必要がある場合の命の恩人ですが、ファイルのアップロードとダウンロードもできることを知っていましたか? SSHキーを使用すると、パスワードを入力してスクリプトに使用する手間を省くことができます。!
SSHアクセス用に正しく設定されていれば、このプロセスはLinuxおよびMac OSで機能します。 Windowsを使用している場合は、Cygwinを使用してLinuxに似た機能を取得できます。少し調整するだけで、SSHも実行できます。.
SSHを介したファイルのコピー
セキュアコピーは本当に便利なコマンドです、そしてそれは本当に使いやすいです。コマンドの基本フォーマットは次のとおりです。
scp [options] original_file destination_file
最大の問題は、リモート部分のフォーマット方法です。リモートファイルをアドレス指定するときは、次の方法でそれを行う必要があります。
user @ server:パス/ to / file
サーバーはURLでもIPアドレスでもかまいません。これにコロンが続き、それから問題のファイルまたはフォルダへのパスが続きます。例を見てみましょう.
scp -P 40050デスクトップ/ url.txt [email protected]:〜/デスクトップ/ url.txt
このコマンドには[-P]フラグが付いています(これは大文字のPです)。これは私がデフォルトの22の代わりにポート番号を指定することを可能にします。.
次に、私の元のファイルは「url.txt」です。これは「Desktop」というディレクトリの中にあります。保存先ファイルは「〜/ Desktop / url.txt」にあり、これは「/user/yatri/Desktop/url.txt」と同じです。このコマンドは、リモートコンピュータ「192.168.1.50」上のユーザ「yatri」によって実行されています。.
もしあなたが反対のことをする必要があるならば?リモートサーバーからも同様にファイルをコピーできます.
ここでは、リモートコンピュータの「〜/ Desktop /」フォルダから自分のコンピュータの「Desktop」フォルダにファイルをコピーしました。.
ディレクトリ全体をコピーするには、[ - r]フラグを使用する必要があります(これは小文字のrです)。.
フラグを組み合わせることもできます。の代わりに
scp -P -r…
あなたはただできる
scp -Pr…
ここで最も過酷な部分は、タブ補完がいつもうまくいくとは限らないということです。そこで、どこに物を置くべきかを知るために、SSHセッションを実行している別の端末を持っていると便利です.
パスワードなしのSSHとSCP
安全なコピーは素晴らしいです。それをスクリプトに入れて、リモートコンピュータへのバックアップをとることができます。問題はあなたがいつもパスワードを入力するために周りにいるとは限らないということです。そして、正直に言って、あなたが明らかにずっとアクセスしているリモートコンピュータにあなたのパスワードを入れることは本当に大きな苦痛です。.
キーファイルを使用することで、パスワードを使用して回避することができます。 1つはリモートサーバー上にあり、もう1つはあなたのコンピュータ上にあり安全である必要があるという2つの鍵ファイルをコンピュータに生成させることができます。これらはパスワードの代わりに使用されます。かなり便利、正しい?
コンピュータで、次のコマンドを入力してください。
ssh-keygen -t rsa
これにより2つのキーが生成され、それらが次の場所に配置されます。
〜/ .ssh /
あなたの秘密鍵は“ id_rsa”、あなたの公開鍵は“ id_rsa.pub”という名前で.
コマンドを入力した後、どこにキーを保存するか尋ねられます。 Enterキーを押して上記のデフォルトを使用できます。.
次に、パスフレーズを入力するように求められます。 Enterキーを押して空白のままにし、確認を求められたらもう一度入力します。次のステップは、公開鍵ファイルをリモートコンピュータにコピーすることです。 scpを使ってこれを行うことができます。
公開鍵の送信先は、リモートサーバーの次のファイルにあります。
〜/ .ssh / authorized_keys2
〜/ .ssh / known_hostsファイルのように、後続の公開鍵をこのファイルに追加することができます。つまり、このサーバーのアカウントに別の公開鍵を追加する場合は、2番目のid_rsa.pubファイルの内容を既存のauthorized_keys2ファイルの新しい行にコピーします。.
セキュリティ上の考慮事項
これはパスワードより安全ではないですか?
実際的な意味では、実際にはそうではありません。生成された秘密鍵は使用しているコンピュータに保存され、転送されることはなく、検証されることすらありません。この秘密鍵はその1つの公開鍵とのみ一致するため、接続は秘密鍵を持つコンピューターから開始する必要があります。 RSAはかなり安全で、デフォルトで2048ビット長を使用します。.
理論的には、パスワードを使うのとかなり似ています。誰かがあなたのパスワードを知っている場合、あなたのセキュリティは窓から出て行きます。他の人があなたの秘密鍵ファイルを持っている場合、それに一致する公開鍵を持っているどのコンピュータに対してもセキュリティが失われますが、それを入手するにはあなたのコンピュータにアクセスする必要があります。.
これをもっと安全にできますか?
パスワードとキーファイルを組み合わせることができます。上記の手順に従いますが、強力なパスフレーズを入力してください。さて、あなたがSSH経由で接続するかSCPを使うとき、あなたは適切な秘密鍵ファイルを必要とするでしょう と同様 適切なパスフレーズ.
一度パスフレーズを入力すると、セッションを閉じるまでそれを要求されることはありません。つまり、初めてSSH / SCPを使用するときは、パスワードを入力する必要がありますが、それ以降のすべての操作ではパスワードは必要ありません。 (リモートのコンピュータではなく)コンピュータからログアウトするか、ターミナルウィンドウを閉じたら、もう一度入力する必要があります。このように、あなたは本当にセキュリティを犠牲にしていませんが、あなたはいつもパスワードに嫌がらせもされていません.
公開鍵と秘密鍵のペアを再利用できますか?
これは本当に悪い考えです。誰かがあなたのパスワードを見つけ、あなたがあなたのすべてのアカウントに同じパスワードを使用した場合、彼らは今やそれらのアカウントすべてにアクセスすることができます。同様に、あなたの秘密鍵ファイルも超秘密で重要です。 (詳細については、電子メールのパスワードが侵害された後の回復方法をご覧ください)
リンクするすべてのコンピュータとアカウントに対して新しいキーペアを作成することをお勧めします。そのようにして、あなたの秘密鍵の1つがどういうわけかつかまえられれば、そしてあなたは1つのリモートコンピュータの1つのアカウントを危険にさらすだけでしょう.
秘密鍵はすべて同じ場所に保存されていることに注意することも非常に重要です。コンピュータの〜/ .ssh /には、TrueCryptを使用して安全な暗号化コンテナを作成し、次に〜/ .sshにシンボリックリンクを作成できます。 /ディレクトリ。自分のしていることにもよりますが、私はこの超妄想的な超安全な方法を使って心を安らぎます。.
あなたはSCPを何らかの脚本の中で使ったことがありますか?パスワードの代わりにキーファイルを使用しますか?コメントで他の読者とあなた自身の専門知識を共有しなさい!