bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明

bash スクリプトで ssh/scp コマンドにパスワードを渡す方法の詳細な説明

SSHPASSをインストールする

最新のオペレーティング システムでは、sshpass パッケージはデフォルトのパッケージ リポジトリで利用できます。次のコマンドを使用してシステムにインストールできます。

Debian の場合:

$ sudo apt sshpassをインストール

CentOS の場合:

$ yum --enablerepo=epel -y sshpassをインストールします

SSHPASSの使用

sshspass は sshspass 環境変数を使用してユーザー パスワードを保存します。まず sshspass 変数とパスワードを使用してから、このコマンドを使用する必要があります。以下は sshspass を使用した簡単なシェル スクリプトです。

エクスポート SSHPASS=ry3AvbWO0oupYX9HCMzp0Axx

sshpass -e scp testfile.csv [email protected]:/uploads/

以下のようにsshpassを使用してsshコマンドを実行することもできます。

sshpass -e ssh ユーザ@example.com

シェルスクリプトでパスワードを要求する SCP コマンドの問題を解決する

キーファイルを使用します。

ここでは、ホスト A (192.168.100.3) を使用してホスト B (192.168.100.4) のファイルを取得することを想定しています。

ペアリング キーを生成するには、ホスト A で次のコマンドを実行します。

ssh-keygen -t rsa

プロンプトが表示されたら Enter キーを押します。公開鍵は、ユーザー ディレクトリの下の .ssh ディレクトリに保存されます。たとえば、root は次の場所に保存されます。

/root/.ssh/id_rsa.pub

.ssh ディレクトリ内の id_rsa.pub ファイルをホスト B の ~/.ssh/ ディレクトリにコピーし、authorized_keys に名前を変更します。

ホスト A でコマンドを実行して、ホスト B との信頼関係を確立します (例: ホスト B の IP が 192.168.100.4 であると仮定)。

scp ~/.ssh/id_rsa.pub 192.168.100.4:/root/.ssh/authorized_keys

次に、scp コマンドと ssh コマンドを使用して、パスワードなしでホスト B からファイルを取得します。ssh 192.168.100.4 Enter キーを押すと、パスワードは不要になります。

注: 実際には、id_rsa.pub の内容を他のマシンの authorized_keys に追加するだけです。

以下もご興味があるかもしれません:
  • Vue-CLI 3 scp2 プロジェクトのサーバーへの自動デプロイ方法
  • Python は scp を呼び出してファイルをサーバーにアップロードする例
  • Windows で秘密鍵を介して ssh と scp を使用する方法
  • Pythonはscpコマンドを実行して、ファイルとフォルダをリモートホストのディレクトリにコピーします。
  • Linuxはscpコマンドを使用してファイルをローカルコンピュータにコピーし、ローカルファイルをリモートサーバーにコピーします。
  • Python Pexpectはパスワード入力によるscpコピーの方法を実装します
  • Linux で scp コマンドを使用してファイルをリモートでコピーする方法の詳細な説明
  • scp は Linux サーバーから別の Linux サーバーにデータをコピーします
  • Androidでscp操作を実装する方法

<<:  js ドラッグ アンド ドロップ テーブルでコンテンツ計算を実現する

>>:  MySQLのサブクエリユニオンの効率性についての簡単な説明と

推薦する

パフォーマンスの最適化を教える 52 個の SQL 文

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

Podmanはコンテナを自動的に起動し、Dockerと比較します

目次1. podmanの紹介2. Dockerと比較した利点3. 互換性4. バックグラウンド サー...

負のz-indexを持つ要素がクリックできない問題の解決策

最近、ポップアップ広告に取り組んでいました。デフォルト ページには z-index が設定されていな...

MySQL 5.7.23 バージョンのインストールチュートリアルと設定方法

MySQL を自分でインストールするのに 3 時間かかりました。チュートリアルはたくさんあるにもかか...

MySQL 使用仕様の概要

1. InnoDBストレージエンジンを使用する必要がありますCPU と IO のパフォーマンスが向上...

Vueはv-modelを使用してel-paginationコンポーネントのプロセス全体をカプセル化します。

v-model を使用してページング情報オブジェクトをバインドします。ページング情報オブジェクトに...

React 国際化 react-i18next の詳細な説明

導入react-i18next は、 i18nextをベースにした強力な国際化フレームワークです。 ...

alpineをベースにdockerfileで作成したクローラーScrapyイメージの実装

1.アルパインイメージをダウンロードする [root@DockerBrian ~]# docker ...

JavaScript でのカスタム スワイパー コンポーネントの詳細な説明

目次エフェクト表示コンポーネント設定ステップ1ステップ2ステップ3コンポーネントの使用ステップ1ステ...

Linux DMAインターフェースの知識ポイントの詳細な説明

1. 2種類のDMAマッピング1.1. 一貫性のあるDMAマッピング主に長期間使用されるエリアをマッ...

Linux環境変数の設定戦略の詳細な説明

ソフトウェアのインストールをカスタマイズする場合、多くの場合、環境変数を設定する必要があります。以下...

jsで照明スイッチを制御する

参考までに、jsを使用して照明スイッチを制御します。具体的な内容は次のとおりです。トピック: js ...

Navicat でストアド プロシージャ、トリガーを作成し、カーソルを使用する簡単な例 (画像とテキスト)

1. テーブルを作成する<br /> まず、2 つのテーブル (users テーブルと...

Vuexの役割についての深い理解

目次概要コンポーネント間でデータを共有する方法Vuex の原則の紹介Vuexはコンポーネントのグロー...

JS ES の新機能、変数分離割り当て

目次1. 配列の分離割り当て1.1 配列分離割り当てとは何ですか? 1.2 配列分離割り当てに失敗し...