สิ่งนี้ใช้ได้กับฉันโดยใช้เพียงไฟล์ซ็อกเก็ตสำหรับตัวควบคุมหลัก:
$ ssh -o ControlPath=~/.ssh/<controlfile> -O check <bogus arg>
ตัวอย่าง
นี่คือตัวอย่างที่ฉันได้สร้างการเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลแล้ว:
$ ssh -o ControlPath=~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check blah
Master running (pid=89228)
$
และด้วยการตัดการเชื่อมต่อ:
$ ssh -o ControlPath=~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O check blah
Control socket connect(/Users/user1/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74): No such file or directory
$
หากยังคงเชื่อมต่ออยู่สิ่งนี้จะบังคับให้ออกทันที:
$ ssh -o ControlPath=~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O exit blah
Exit request sent.
$
มันไม่ชัดเจนสำหรับฉัน แต่ดูเหมือนว่ามันอาจเป็นข้อบกพร่องในการssh
ที่มันต้องมีการโต้แย้งเพิ่มเติมในตอนท้ายแม้ว่าblah
จะไม่มีความหมายในบริบทของสวิตช์ที่ฉันใช้
หากปราศจากมันก็ให้สิ่งนี้กับฉัน:
$ ssh -o ControlPath=~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key]
[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
ข้อมูลรุ่น
OSX
$ ssh -V
OpenSSH_6.9p1, LibreSSL 2.1.8
CentOS 7.x
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
ฉันยืนยันว่าในทั้งสองเวอร์ชันนี้จำเป็นต้องมีอาร์กิวเมนต์ปลอมเพิ่มเติม
อ้างอิง
ssh -S none
(อาจช่วยคุณได้แล้ว)