song song ssh với Khóa mật khẩu được bảo vệ bằng mật khẩu


8

Tôi muốn sử dụng khóa SSH được bảo vệ bằng mật khẩu khi thực hiện các tác vụ với parallel-ssh(và các công cụ liên quan). Tuy nhiên, tôi không thể làm việc này được.

Tất cả các tài liệu, liên quan parallel-ssh, cho thấy rằng tôi sẽ có thể sử dụng --askpasshoặc -Ađể làm điều này:

-A
--askpass
      Prompt  for  a  password  and pass it to ssh.  The password may be 
      used for either to unlock a key or for password authentication.  The 
      password is transferred in a fairly secure manner (e.g., it will not 
      show up in argument lists).  However, be aware that a root user on 
      your system could potentially intercept the password.

Tuy nhiên, khi tôi nhập cụm mật khẩu của khóa, nó không hoạt động:

$ parallel-ssh --hosts=machines --user=my_user --askpass \
    --timeout=0 --inline -v 'sudo apt-get update'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 09:59:36 [FAILURE] amritiii Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[2] 09:59:37 [FAILURE] gbdev Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[3] 09:59:37 [FAILURE] code Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[4] 09:59:37 [FAILURE] apollo Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[5] 09:59:37 [FAILURE] odin Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[6] 09:59:37 [FAILURE] hathor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[7] 09:59:37 [FAILURE] ldap Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[8] 09:59:37 [FAILURE] thor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[9] 09:59:37 [FAILURE] bioserver Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).

Tôi đã xác nhận rằng khóa SSH và cụm mật khẩu của tôi hoạt động trên mỗi máy nên tôi không biết làm thế nào để nó hoạt động.


Tôi đang giả sử rằng ssh song song giống như pssh?
slm

Vâng, parallel-sshpsshthực sự là như vậy.
Nathan S. Watson-Haigh

Câu trả lời:


5

Giả sử rằng parallel-sshpsshtương đương thì có, những gì bạn đang cố gắng làm sẽ hoạt động tốt với việc sử dụng cụm mật khẩu khi sử dụng công -Atắc.

Thí dụ

Đây là một ví dụ nơi tôi kết nối với 2 hệ thống khác nhau host1host2. Tôi sử dụng -lchuyển đổi psshđể cung cấp một người dùng mặc định root. Tuy nhiên, host2tôi ghi đè lên phần này -Hbằng cách chỉ định tên máy chủ là user1@host2.

$ pssh -A -i -H "host1 user1@host2" -l root 'echo "hi"'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 21:38:00 [SUCCESS] user1@host2
hi
Stderr: 
This is a private site.  Unauthorized connections are prohibited.  
All activity may be logged.  Disconnect immediately if you object to 
this policy or are not an authorized user.

X11 forwarding request failed on channel 1
Killed by signal 1.
[2] 21:38:00 [SUCCESS] host1
hi
Stderr: 
This is a private site.  Unauthorized connections are prohibited.  
All activity may be logged.  Disconnect immediately if you object to 
this policy or are not an authorized user.

ControlSocket /home/user1/.ssh/master-user1@ssh-tunnel.mydomain.com:22 already exists, disabling multiplexing
X11 forwarding request failed on channel 0
Killed by signal 1.

Khi các công việc trên bạn sẽ nhận thấy đầu ra của lệnh tôi đang chạy echo "hi".

Vấn đề của bạn

Vấn đề bạn gặp phải với cụm mật khẩu trên cặp khóa SSH là do lỗi. Đây là lỗi có tiêu đề: Vấn đề 80: Không vượt qua cụm mật khẩu? . Nhận xét thứ 4 cho vấn đề đó cho thấy một bản vá:

đoạn trích

Số 4 cướp ... @ gmail.com

Tôi đã thay đổi dòng thành

  if not ( prompt.strip().lower().endswith('password:') or 
        'enter passphrase for key' in prompt.strip().lower()):

và nó dường như làm việc

Người giới thiệu


Cảm ơn cho slm đầu vào của bạn. parallel-sshpsshthực sự là như nhau. Tôi đã không hỏi nếu nó có thể - tài liệu cho thấy rõ rằng nó có thể. Tôi gặp rắc rối với việc thực sự làm cho nó hoạt động như được ghi lại.
Nathan S. Watson-Haigh

1
@ NathanS.Watson-Haigh - xem cập nhật. Đó là một lỗi, tôi đã giới thiệu bản vá.
slm

Đây thực sự là vấn đề đang ảnh hưởng đến tôi. Tuy nhiên, vì các tác giả parallel-sshvẫn không chắc chắn cách tốt nhất để phát hiện câu hỏi nhắc mật khẩu và do đó trả lời bằng mật khẩu / cụm từ đã nhập, tôi sẽ sử dụng phương pháp móc khóa của mình. Tôi sẽ không muốn mật khẩu của mình vô tình bị tiết lộ cho câu hỏi sai.
Nathan S. Watson-Haigh

1
Tôi sẽ chấp nhận đây là câu trả lời khi bạn quản lý để nhận ra rằng đây là một lỗi đã biết trong cách parallel-sshchuyển cụm mật khẩu sang SSH. Tuy nhiên, đối với những người gặp phải câu hỏi này trong tương lai, lỗi này có thể đã được sửa hoặc bạn có thể chọn không chỉnh sửa askpass_client.pytệp. Trong cả hai trường hợp, bạn có thể giải quyết vấn đề này bằng cách sử dụng keychaincâu trả lời ( unix.stackexchange.com/a/128998/57414 ) hoặc câu trả lời của đại lý ssh ( unix.stackexchange.com/a/129022/57414 )
Nathan S. Watson- Haigh

5

Tôi đã quản lý để làm việc này bằng cách cài đặt keychainthay vì tự vá lỗi gây ra sự cố của mình.

Cài đặt và chạy thủ công móc khóa

# install keychain package
$ sudo apt-get install keychain

# add my key to the keychain, entering passphrase when asked
$ keychain ~/.ssh/id_rsa

# source the file generated by the above command
$ . ~/.keychain/$(uname -n)-sh

Chạy lệnh mà không cần nhập mật khẩu / mật khẩu

Bây giờ, lần này tôi không cần cụm mật khẩu của mình khi gọi parallel-sshvì móc khóa đảm nhiệm việc xác thực:

$ parallel-ssh --hosts=machines --user=my_user --timeout=0 'sudo apt-get update'
[1] 14:52:15 [SUCCESS] amritiii 
[2] 14:52:17 [SUCCESS] odin
[3] 14:52:25 [SUCCESS] gmod
[4] 14:53:11 [SUCCESS] bioserver
[5] 14:53:14 [SUCCESS] thor
[6] 14:53:14 [SUCCESS] apollo
[7] 14:53:16 [SUCCESS] gbdev
[8] 14:53:17 [SUCCESS] code
[9] 14:53:18 [SUCCESS] hathor
[10] 14:53:34 [SUCCESS] ldap

Chạy móc khóa khi đăng nhập

Thay vì phải tự chạy và thêm khóa của bạn vào móc khóa, chỉ cần thêm phần sau vào cuối của bạn ~/.bash_profile:

$ keychain --clear $HOME/.ssh/id_rsa
$ . $HOME/.keychain/$(uname -n)-sh

Điều này đảm bảo rằng trong lần đăng nhập đầu tiên của bạn, sau khi khởi động lại, bạn sẽ được nhắc nhập cụm mật khẩu của khóa. Khóa của bạn sau đó sẽ ở trong móc khóa cho đến lần khởi động lại tiếp theo hoặc bạn xóa khóa bằng tay.

Công việc định kỳ sử dụng móc khóa

Với phần trên được nhập vào ~/.bash_profiletệp của bạn , bạn có thể tận dụng thực tế là khóa của bạn hiện được lưu trong móc khóa bằng cách xóa cùng một tệp trước khi chạy cronjob của bạn. Ví dụ: tôi có một tập lệnh sao lưu chạy vào lúc 21:00 mỗi đêm và sao chép nội dung vào máy tính từ xa thông qua SSH. Đây là một mục trong crontab của tôi ( crontab -e):

 0 21 * * * . $HOME/.keychain/$(uname -n)-sh; $HOME/backup_script.sh

1

Sử dụng tác nhân ssh để xác thực tự động (với tên shell là đối số để có các biến môi trường tác nhân được đặt trong shell mới đó). Thêm khóa bằng ssh-add và nhập mật khẩu của bạn chỉ một lần.

$ ssh-agent bash
$ ssh-add
Enter passphrase for /xxxx/.ssh/identity: 
$ 
$ pssh ...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.