243

sshOpenSSHクライアントにパスワードを自動的に入力するスクリプトを作成する必要があります。

myname@somehostpassword でSSH 接続する必要があるとしましょうa1234b

私はすでに試しました...

#~/bin/myssh.sh
ssh myname@somehost
a1234b

...しかし、これは機能しません。

この機能をスクリプトに組み込むにはどうすればよいですか?

4

23 に答える 23

325

最初にsshpassをインストールする必要があります。

  • Ubuntu/デビアン:apt-get install sshpass
  • フェドラ/CentOS:yum install sshpass
  • アーチ:pacman -S sshpass

例:

sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no YOUR_USERNAME@SOME_SITE.COM

カスタム ポートの例:

sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no YOUR_USERNAME@SOME_SITE.COM:2400

ノート:

  • sshpass-fフラグが渡さ れると、ファイルからパスワードを読み取ることもできます。
    • を使用すると、コマンドの実行-f時にパスワードが表示されなくなります。ps
    • パスワードが保存されているファイルには、安全なアクセス許可が必要です。
于 2013-05-24T12:21:23.553 に答える
145

この質問に対する答えを何ヶ月も探した後、私は最終的により良い解決策を見つけました。単純なスクリプトを書くことです。

#!/usr/bin/expect

set timeout 20

set cmd [lrange $argv 1 end]
set password [lindex $argv 0]

eval spawn $cmd
expect "password:"
send "$password\r";
interact

に入れ/usr/bin/expますので、次を使用できます。

  • exp <password> ssh <anything>
  • exp <password> scp <anysrc> <anydst>

終わり!

于 2015-02-03T06:59:49.997 に答える
83

公開鍵認証を使用: https://help.ubuntu.com/community/SSH/OpenSSH/Keys

ソース ホストで、これを 1 回だけ実行します。

ssh-keygen -t rsa # ENTER to every field
ssh-copy-id myname@somehost

以上で、パスワードなしで ssh を実行できるようになります。

于 2012-08-30T17:51:10.590 に答える
31

Expects スクリプトを使用できます。かなり長い間書いていませんが、以下のようになります。スクリプトの先頭に#!/usr/bin/expect

#!/usr/bin/expect -f
spawn ssh HOSTNAME
expect "login:" 
send "username\r"
expect "Password:"
send "password\r"
interact
于 2012-08-30T17:53:31.990 に答える
25

バリアント I

sshpass -p PASSWORD ssh USER@SERVER

バリアント II

#!/usr/bin/expect -f
spawn ssh USERNAME@SERVER "touch /home/user/ssh_example"
expect "assword:"
send "PASSWORD\r"
interact
于 2015-01-17T00:10:59.930 に答える
8

これは、サーバーにログインする方法です。

ssp <server_ip>
  • alias ssp='/home/myuser/Documents/ssh_script.sh'
  • cat /home/myuser/Documents/ssh_script.sh

ssp:

#!/bin/bash

sshpass -p mypassword ssh root@$1

したがって:

ssp server_ip
于 2019-05-28T12:48:16.437 に答える
1

@abbotto の答えは私にはうまくいきませんでした。

  1. yum install sshpass をrpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/sshpass-1.05-1.el6.x86_64.rpmに変更
  2. sshpass を使用するコマンドが - sshpass -p "pass" ssh user@mysite -p 2122に変更されました
于 2016-11-15T14:40:38.170 に答える