วิธีใช้ PuTTY สำหรับการส่งต่อคีย์


7

สถานการณ์ของฉัน: - ฉันกำลังเชื่อมต่อจากพีซีของฉัน (Windows 7) ไปยังเซิร์ฟเวอร์ A ผ่าน (โดยใช้คีย์ส่วนตัวและรหัสผ่านของฉัน) ด้วยuserA- ฉันต้องการเชื่อมต่อจาก A ไปยังเซิร์ฟเวอร์ B ผ่านทางคำสั่ง ssh: ssh userB@serverNameแต่ ฉันได้รับ "ปฏิเสธการอนุญาต"

ssh\authorized_keysทุกเซิร์ฟเวอร์คีย์ของฉันที่มีอยู่ในโฟลเดอร์ แม้ว่าฉันสามารถเชื่อมต่อจากพีซีของฉันไปยังเซิร์ฟเวอร์ B โดยตรงและถ้าฉันพยายามเชื่อมต่อจากเซิร์ฟเวอร์ A ฉันได้รับข้อผิดพลาดนี้

ผู้ที่ใช้ Linux ประสบความสำเร็จในการใช้คำสั่งssh -Aเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ B. ฉันเชื่อว่าตัวเลือก PuTTY "Agent forwarding"นั้นเทียบเท่ากัน แต่ .. ยังคงเป็นข้อผิดพลาดเดียวกัน

บันทึกจากsshเมื่อฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์ B จากเซิร์ฟเวอร์ A:

OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to serverB port 22.
debug1: Connection established.
debug1: identity file /home/userA/.ssh/identity type -1
debug1: identity file /home/userA/.ssh/id_rsa type -1
debug1: identity file /home/userA/.ssh/id_dsa type -1
debug1: loaded 3 keys
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'serverB' is known and matches the RSA host key.
debug1: Found key in /home/userA/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
*******************************************************************************
*            This equipment is the propertyof            *
*                    UNAUTHORIZED ACCESS WILL BE PROSECUTED                   *
*******************************************************************************
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Next authentication method: publickey
debug1: Trying private key: /home/userA/.ssh/identity
debug1: Trying private key: /home/userA/.ssh/id_rsa
debug1: Trying private key: /home/userA/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

คำตอบ:


20

ใช่ตัวเลือกนั้นเทียบเท่า แต่จะไม่ส่งต่อคีย์ทั่วไป - จะส่งต่อการเชื่อมต่อไปยัง "เอเจนต์ SSH"โดยเฉพาะ "ตัวแทน" ถือกุญแจของคุณในหน่วยความจำถอดรหัส (ดังนั้นคุณจะต้องปลดล็อคพวกเขาเพียงครั้งเดียว) และลูกค้าขอให้มันลงชื่อข้อมูลสำหรับการตรวจสอบ

บน Linux / Unix / BSD / Cygwin โปรแกรมตัวแทนของ OpenSSH คือssh-agent(แม้ว่าในบางโอกาสจะถูกแทนที่ด้วย gpg-agent หรือ gnome-keyring แต่นั่นไม่สำคัญเลย)

ในขณะเดียวกัน PuTTY บน Windows มี  pageant.exeจุดประสงค์เดียวกัน (โปรแกรมอื่น ๆ เช่น WinSCP ก็ใช้ Pageant ด้วย)

ขั้นแรกให้เริ่มตัวแทนและโหลดกุญแจของคุณลงไป (การคลิกสองครั้งที่ไฟล์คีย์. pkk นั้นจะเพียงพอ) ตอนนี้เมื่อ PuTTY บนพีซีของคุณเชื่อมต่อกับเซิร์ฟเวอร์ A มันจะใช้คีย์ของคุณจากเอเจนต์ที่ทำงานบนพีซีของคุณไม่ใช่จากไฟล์. ppt

  • Pageant บนพีซี (เอเจนต์) ⇆ PuTTY บนพีซี (ไคลเอนต์) ⇆ sshd บนเซิร์ฟเวอร์ A (เซิร์ฟเวอร์)

ในทำนองเดียวกันเมื่อคุณอยู่บนเซิร์ฟเวอร์ A และทำงานssh serverBมันจะพยายามติดต่อตัวแทนที่ทำงานบนเซิร์ฟเวอร์ A

  • ??? (ตัวแทน) ⇆ ssh บนเซิร์ฟเวอร์ A (ลูกค้า) ⇆ sshd บนเซิร์ฟเวอร์ B (เซิร์ฟเวอร์)

หากคุณเชื่อมต่อกับเซิร์ฟเวอร์ A ด้วย "การส่งต่อตัวแทน" หรือ-Aตัวเลือกที่เปิดใช้งานแล้ว PuTTY จะถ่ายทอดการเชื่อมต่อของตัวแทนและsshบน serverA จะสามารถใช้คีย์จากตัวแทนในพีซีของคุณ

  • Pageant บนพีซี (เอเจนต์) ⇆ PuTTY บนพีซี (ไคลเอนต์ส่งต่อ) ⇆ sshd บนเซิร์ฟเวอร์ A (เซิร์ฟเวอร์ส่งต่อ) sh ssh บนเซิร์ฟเวอร์ A (ไคลเอนต์) ⇆ sshd บนเซิร์ฟเวอร์ B (เซิร์ฟเวอร์)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.