ยอมรับลายนิ้วมือคีย์ rsa โดยอัตโนมัติจากบรรทัดคำสั่ง


15

ฉันพยายามyes | ssh root@10.x.x.xที่จะยอมรับลายนิ้วมือคีย์ RSA แต่ยังคงได้รับแจ้งถ้าฉันแน่ใจว่าฉันต้องการเชื่อมต่อ มีวิธีทำให้อัตโนมัติหรือไม่

คำตอบ:


8

เพิ่มลงในไฟล์ bash startup ของคุณหรือที่คล้ายกัน:

 #
 #  ssh + scp without storing or prompting for keys.
 #
 function sshtmp
 {
     ssh -o "ConnectTimeout 3" \
         -o "StrictHostKeyChecking no" \
         -o "UserKnownHostsFile /dev/null" \
              "$@"
 }
 function scptmp
 {
     exec scp -o "ConnectTimeout 3" \
         -o "StrictHostKeyChecking no" \
         -o "UserKnownHostsFile /dev/null" \
         "$@"
 }

จากนั้นใช้sshtmpหรือscptmpในสถานที่และ sshscp

หมายเหตุหากคุณไปตามถนนสายนี้คุณจะไม่ได้รับการแจ้งเตือนว่ารหัสโฮสต์ถูกเปลี่ยนและจะสูญเสียความปลอดภัย


4
ขอบคุณที่ssh -o "StrictHostKeyChecking no" root@10.x.x.xทำงานให้ฉัน
VenomFangs

16
นี่เป็นคำตอบอย่างไร คำถามคือการยอมรับกุญแจโดยอัตโนมัติอย่าเพิกเฉย! หากมีการถามและตอบคำถามที่นี่ฉันจะค้นหาคำตอบของคำถามที่เกิดขึ้นจริง "ยอมรับปุ่มอัตโนมัติ" ได้อย่างไร เกลียดที่จะลงคะแนน แต่เป็นคนมานี่ไม่ใช่วิธีการแลกเปลี่ยนสแต็คที่ควรจะเป็น!
JohnnyB

@ JohnnyB ดูคำตอบของฉัน มันไม่ได้เป็นวิธีที่สะอาดที่สุด แต่จริง ๆ แล้วอนุญาตให้คีย์เป็นที่ยอมรับโดยอัตโนมัติ
RDP

13

OpenSSH 7.6 ได้แนะนำStrictHostKeyChecking=accept-newการตั้งค่าใหม่สำหรับจุดประสงค์นี้:

ssh(1): expand the StrictHostKeyChecking option with two new
   settings. The first "accept-new" will automatically accept
   hitherto-unseen keys but will refuse connections for changed or
   invalid hostkeys. This is a safer subset of the current behaviour
   of StrictHostKeyChecking=no. The second setting "n", is a synonym
   for the current behaviour of StrictHostKeyChecking=no: accept new
   host keys, and continue connection for hosts with incorrect
   hostkeys. A future release will change the meaning of
   StrictHostKeyChecking=no to the behaviour of "accept-new".

( OpenSSH 7.6 บันทึกย่อประจำรุ่น )


10

การใช้ SSH โดยทางโปรแกรมด้วยคีย์โฮสต์ที่รู้จัก

หากสิ่งที่คุณต้องการที่จะสามารถใช้โปรแกรมและหลีกเลี่ยง Man-in-the-Middle โจมตีssh-keyscanแล้วฉันขอแนะนำให้คุณได้รับลายนิ้วมือที่รู้จักกันโดยใช้คำสั่ง ตัวอย่าง:

$ ssh-keyscan -t rsa,dsa github.com 2>/dev/null
github.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==
github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==

จากนั้นคุณสามารถปลอมแปลงสคริปต์เพื่อบันทึกเป็นไฟล์ชั่วคราวและใช้UserKnownHostsFileตัวเลือก ตัวอย่างด้านล่างเป็นสคริปต์ซึ่งสามารถเรียกได้ssh_github:

#!/bin/bash

HOSTKEY='github.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+                      h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==
github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+                                                                                                                                      PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+    2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=='

TEMPFILE=$(mktemp)
echo "$HOSTKEY" > $TEMPFILE

ssh -o "UserKnownHostsFile $TEMPFILE" $@

rm $TEMPFILE

ด้วยวิธีนี้คุณสามารถเรียกใช้ssh_githubแทนsshและมันจะเชื่อมต่อแม้ว่าจะไม่มีknown_hostsไฟล์ที่คุณวางสคริปต์


0

ฉันเพิ่งใช้: 'ssh -o StrictHostKeyChecking = ไม่มีผู้ใช้ @ host', มันสามารถใช้กับ pssh: 'pssh -O StrictHostKeyChecking = ไม่ -h list.text -l ผู้ใช้ -A -i "cmd"'

ความนับถือ,


สิ่งนี้ได้ผลสำหรับฉันมีเหตุผลว่าทำไมมันถึงถูกโหวต? ต้องใช้ OpenSSH 7.6+
Xenocide8998

-3

คุณสามารถใช้-yตัวเลือก: เช่นลอง

ssh -y root@10.x.x.x

-y ยอมรับคีย์โฮสต์ระยะไกลเสมอหากไม่ทราบ


ยินดีต้อนรับสู่ Server Fault! โปรดใช้Markdownและ / หรือตัวเลือกการจัดรูปแบบในเมนูแก้ไขเพื่อตั้งค่าโพสต์ของคุณอย่างเหมาะสมเพื่อปรับปรุงความสามารถในการอ่าน มันเป็นแบบแผนในการจัดรูปแบบคำสั่งเป็น " code"
HBruijn

แปลก แต่ในผู้ชายฉันเห็นสิ่งต่อไปนี้ --y Send log information using the syslog system module. By default this information is sent to stderr.
ALex_hha

ฉันเห็นเหมือนกันในมนุษย์
KirályIstván

นี่ไม่ใช่ตัวเลือก ssh ที่ถูกต้อง? คุณคัดลอก / วางจากที่ไหน
Flo Woo

2
ตัวเลือกนี้มีอยู่ใน dropbear SSH ไม่ใช่ OpenSSH
Jeremy Visser
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.