ฉันพยายามyes | ssh root@10.x.x.x
ที่จะยอมรับลายนิ้วมือคีย์ RSA แต่ยังคงได้รับแจ้งถ้าฉันแน่ใจว่าฉันต้องการเชื่อมต่อ มีวิธีทำให้อัตโนมัติหรือไม่
ฉันพยายามyes | ssh root@10.x.x.x
ที่จะยอมรับลายนิ้วมือคีย์ RSA แต่ยังคงได้รับแจ้งถ้าฉันแน่ใจว่าฉันต้องการเชื่อมต่อ มีวิธีทำให้อัตโนมัติหรือไม่
คำตอบ:
เพิ่มลงในไฟล์ 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
ในสถานที่และ ssh
scp
หมายเหตุหากคุณไปตามถนนสายนี้คุณจะไม่ได้รับการแจ้งเตือนว่ารหัสโฮสต์ถูกเปลี่ยนและจะสูญเสียความปลอดภัย
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".
การใช้ 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
ไฟล์ที่คุณวางสคริปต์
ฉันเพิ่งใช้: 'ssh -o StrictHostKeyChecking = ไม่มีผู้ใช้ @ host', มันสามารถใช้กับ pssh: 'pssh -O StrictHostKeyChecking = ไม่ -h list.text -l ผู้ใช้ -A -i "cmd"'
ความนับถือ,
คุณสามารถใช้-y
ตัวเลือก: เช่นลอง
ssh -y root@10.x.x.x
-y
ยอมรับคีย์โฮสต์ระยะไกลเสมอหากไม่ทราบ
-y Send log information using the syslog system module. By default this information is sent to stderr.
ssh -o "StrictHostKeyChecking no" root@10.x.x.x
ทำงานให้ฉัน