ขั้นตอนที่ 1
ตรวจสอบให้แน่ใจว่าตัวแทนท้องถิ่นของคุณพร้อมแล้ว
เพียงเพราะคุณสามารถ ssh ลงในเซิร์ฟเวอร์ป้อมปราการของคุณโดยไม่ระบุเส้นทางหลักของคุณหรือรับรหัสผ่านไม่ได้หมายความว่าเอเจนต์ ssh ของคุณกำลังทำงานและถือกุญแจอยู่ ระบบปฏิบัติการสมัยใหม่บางตัว (เช่น: OSX) จัดการสิ่งนี้ให้คุณ
บนเครื่องท้องถิ่นของคุณ
$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem
รูปที่ 1
นั่นหมายความว่าตัวแทนของคุณกำลังทำงานและมีกุญแจของคุณ
$ ssh-add -L
The agent has no identities.
รูปที่ 2
นั่นหมายความว่าคุณยังไม่ได้เพิ่มกุญแจใด ๆ ในตัวแทนของคุณ แก้ไขด้วย:
ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem
รูปที่ 3
ขั้นตอนที่ 2
ตรวจสอบให้แน่ใจว่าตัวแทนระยะไกลของคุณพร้อม
SSH ลงในเซิร์ฟเวอร์ป้อมปราการของคุณและทำซ้ำการตรวจสอบจากรูปที่ 1และรูปที่ 2 อย่างไรก็ตามข้อผิดพลาดที่คุณมักจะได้รับคือ:
$ ssh-add -L
Could not open a connection to your authentication agent.
fig.4
นั่นหมายถึงว่าลูกค้า SSH ของคุณไม่ได้ส่งต่อการเชื่อมต่อตัวแทนการรับรองความถูกต้องของคุณ
คุณสามารถบังคับใช้สิ่งนี้ด้วยการ-A
ตั้งค่าสถานะ (ตราบใดที่การกำหนดค่าsshdบนเซิร์ฟเวอร์อนุญาตซึ่งเป็นค่าเริ่มต้น )
$ ssh -A bastion.ec2
fig.5
ขั้นตอนที่ 3
ตรวจสอบให้แน่ใจว่าคุณใช้กุญแจที่ถูกต้อง
หากคุณเพิ่มคีย์ให้กับตัวแทนของคุณตัวแทนของคุณกำลังส่งต่อและตัวแทนระยะไกลของคุณจะแสดงรายการรหัสท้องถิ่นของคุณ มีเพียงสองเหตุผลที่เป็นไปได้ที่คุณไม่ได้รับการเชื่อมต่อ ไม่ว่าคุณจะไม่ได้ใช้รหัสที่ถูกต้องหรือคุณไม่ได้ใช้ชื่อผู้ใช้ที่ถูกต้อง
เอาท์พุทคู่สาธารณะเพื่อคีย์ส่วนตัวของคุณ:
$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13
fig.6
เหล่านี้ควรจะเป็นเช่นเดียวกับสิ่งที่คุณได้เห็นจากการssh-add -L
ขึ้นไป==
ใกล้ถึงจุดสิ้นสุด
ทีนี้ไม่ทางใดก็ทางหนึ่งคุณต้องเข้าไปในช่องที่คุณไม่สามารถเชื่อมต่อและดูเนื้อหาของ$HOME/.ssh/authorized_keys
ไฟล์สำหรับผู้ใช้ที่คุณกำลังพยายามเชื่อมต่อด้วย คุณต้องแน่ใจว่ากุญแจสาธารณะที่คุณส่งออกด้วยคำสั่งด้านบนนั้นอยู่ในไฟล์นั้นบนบรรทัดด้วยตัวมันเอง คุณไม่สามารถเชื่อถือได้ว่าsharedkey.pub
Bro 2 ก้อนส่งอีเมลถึงคุณถูกต้องแล้ว ตรวจสอบ! สิ่งนี้อาจต้องการการรับคนอื่นที่สามารถใช้ SSH ในฐานะผู้ใช้รายนั้นเพื่อให้คุณได้รับไฟล์ authorized_keys หรือการเข้าถึงรูท หากคุณมาไกลขนาดนี้ แต่ก็ยังใช้งานไม่ได้
ขั้นตอนที่ 4
ทำให้เป็นเรื่องง่าย
หวังว่าขั้นตอนข้างต้นจะช่วยให้คุณเข้ามาลองทำให้ปวดหัวนี้หายไปตราบใดที่คุณใช้เวิร์กสเตชันนี้
กำหนดค่าโลคอล ssh-client ของคุณ
Host *
# A lot of people put an IdentityFile line in this Host * section.
# Don't do that unless you will use only 1 key everywhere forever.
#IdentityFile id_rsa
Host bastion.ec2
# You want to make sure you always forward your agent to this host.
# But don't forward to untrusted hosts. So don't put it in Host *
ForwardAgent yes
# Go a head and put the IP here in case DNS ever fails you.
# Comment it out if you want. Having it recorded is a good backup.
HostName 172.31.0.1
# You don't want to create a proxy loop later, so be explicit here.
ProxyCommand none
# SSH should try using all keys in your .ssh folder, but if you
# know you want this key, being explicit speeds authentication.
IdentityFile ~/.ssh/mykey.pem
# Connect effortlessly by hostname or IP address
# This assumes that your internal DNS uses the fake TLD ec2
# This assumes that 172.31.0.0 is your C-Class subnet
Host *.ec2 172.31.*
# This command says proxy all ssh connections through bastion as if
# you had done an ssh -A
ProxyCommand ssh -W %h:%p bastion.ec2
ForwardAgent yes
# These next lines are documentation you leave as a love letter to
# your future self when all else fails or you have to help a
# coworker and decide to look at your own config.
# ssh-add ~/.ssh/*.pem
# ssh -At bastion.ecs ssh admin@172.31.18.19
fig.7
ถ้าคุณใช้อะไรอย่างอื่นออกไปจากfig.7มันควรจะใช้ที่เหมาะสมของงานProxyCommand
ForwardAgent
เติม. bash_profile ของคุณโดยอัตโนมัติ
คุณไม่ต้องการที่จะทำssh-add
ด้วยตนเองทุกครั้งที่คุณเข้าสู่เครื่องของคุณ ~/.bash_profile
เป็นสคริปต์ที่ทำงานทุกครั้งที่คุณเข้าสู่ระบบ ** ใส่สายจากรูปที่ 3ในนั้นและคุณควรมีตัวแทนของคุณพร้อม
** อย่าสับสนกับสิ่งนี้.bashrc
ที่ทำงานสำหรับเทอร์มินัล [แบบโต้ตอบ] ใหม่ ตัวแทนของคุณยังคงทำงานแม้ว่าคุณจะปิดเซสชันเทอร์มินัลทั้งหมด ไม่จำเป็นต้องโหลดกุญแจของคุณอีกครั้ง
ทางเลือกในการใช้. bash_profile
ฉันยังได้สร้างส่วนสำคัญที่เพิ่มตัวแทน OSX / MacOS เปิดตัว คุณสามารถใช้วิธีการดังกล่าวในการเริ่มต้นssh-agent
ระบบของคุณ มันง่ายมากที่จะติดตั้ง:
curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash
ForwardAgent yes
ด้วย-A
ถ้าเจ้าภาพไม่อนุญาตให้มัน