ssh-add บ่น: ไม่สามารถเปิดการเชื่อมต่อกับตัวแทนการตรวจสอบของคุณ


151

ฉันพยายามssh-addทำงานกับ RaspberryPi ที่รัน Raspbian อยู่

ฉันสามารถเริ่มต้นssh-agentเมื่อฉันให้ออกต่อไปนี้ใน terminal:

SSH_AUTH_SOCK=/tmp/ssh-06TcpPflMg58/agent.2806; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2807; export SSH_AGENT_PID;
echo Agent pid 2807;

ถ้าฉันวิ่งps aux | grep sshฉันจะเห็นว่ามันกำลังวิ่งอยู่

จากนั้นฉันพยายามเรียกใช้ssh-addเพื่อเพิ่มข้อความรหัสผ่านที่สำคัญของฉันและฉันได้รับสิ่งต่อไปนี้:

Could not open a connection to your authentication agent.

ความคิดใด ๆ


6
ลองeval $(ssh-agent)
Ulrich Dangel

คำตอบ:


224

ssh-agentเปลือกของคุณมีความหมายในการประเมินว่าการส่งออกรหัสเปลือกโดย รันสิ่งนี้แทน:

eval "$(ssh-agent)"

หรือถ้าคุณเริ่มต้น ssh-agent แล้วให้คัดลอกวางลงในพรอมต์เชลล์ของคุณ (สมมติว่าคุณใช้เชลล์เหมือนบอร์น)

sshคำสั่งจำเป็นต้องรู้วิธีการพูดคุยกับssh-agentพวกเขารู้ว่าจากSSH_AUTH_SOCKตัวแปรสภาพแวดล้อม


ขอบคุณฉันไม่เข้าใจวิธีการทำงาน ขอบคุณมากครับ
Daniel Groves

2
หรือคุณสามารถป้อน bash ssh-agent และหลังจาก ssh-add จะทำงาน
RaduM

@Stephane ฉันจะได้รับมันอย่างถูกต้องว่าคำสั่ง ssh-agent เพียงพิมพ์ผลลัพธ์ของการดำเนินการในขณะที่รุ่น eval จริงเรียกใช้คำสั่งหรือไม่
Denys S.

5
@DenysS ไม่มันทำการติดตั้งแล้วบอกเชลล์ของคุณถึงวิธีการอัพเดตสภาพแวดล้อมเพื่อให้สามารถติดต่อได้ มันไม่สามารถทำได้ด้วยตัวเอง มันสามารถเริ่มเชลล์ใหม่ด้วยสภาพแวดล้อมที่อัปเดต (นั่นคือสิ่งที่ssh-agent bashทำ) แต่ไม่สามารถอัพเดตหน่วยความจำของกระบวนการแยกต่างหากที่รันคำสั่ง foreign (เชลล์ที่รันอยู่แล้วของคุณ)
Stéphane Chazelas

@StephaneChazelas หาก ssh-agent ของฉันเริ่มต้นในการบูท แต่ฉันยังต้องทำการ eval มันในเชลล์ของฉันหมายความว่ามันไม่ได้ถูกประเมินโดยอัตโนมัติสำหรับทุกเชลล์และจะต้องมีการกำหนดค่าอย่างใดโดยผู้ใช้รูท?
Denys S.

27

ลองอันนี้:

$ ssh-agent /bin/sh
$ ssh-add $yourkey

5
มันใช้งานได้จริงสำหรับฉันที่ไม่มีคำตอบอื่นใดทำงาน
โจเซฟสโนว์

2
หากคุณใช้เปลือกปลาคำตอบนี้ใช้ได้ผล ssh-agent /usr/bin/fish.
slackmart

1
ฉันได้รับข้อผิดพลาด: " ไม่สามารถเปิดการเชื่อมต่อกับตัวแทนการรับรองความถูกต้องของคุณ "
IgorGanapolsky

@slackmart หากคุณติดตั้งปลาใน BSD ตำแหน่งของมันคือ/usr/local/bin/fish(อีกทางหนึ่ง/usr/ports/shells/fish) ขอบคุณwhereisคำสั่งที่ช่วยฉันคิดออก
cjm

ยอดเยี่ยม @cjm ฉันใช้ Slackware Linux และนั่นเป็นเส้นทางที่เหมาะกับฉัน
slackmart

12

คำถามนี้ยังได้รับการคุ้มครองอย่างดีในStackoverflow

eval `ssh-agent -s`

ssh-add

`...`คุณลืมคำพูดที่อยู่รอบ ๆ หากไม่มีพวกเขาตัวดำเนินการแยก + glob จะถูกเรียกใช้ในเอาต์พุต
Stéphane Chazelas

6

หากใช้ csh เป็นเชลล์ ( FreeBSD PI ) สิ่งนี้สามารถใช้งานได้:

eval `ssh-agent -c`

ต่อไปคุณจะต้องทำสิ่งที่ชอบ:

ssh-add ~/.ssh/id_rsa

ฉันได้รับข้อผิดพลาด: " ไม่สามารถเปิดการเชื่อมต่อกับตัวแทนการตรวจสอบความถูกต้องของคุณ "
IgorGanapolsky

2

คุณอาจใช้ไวยากรณ์ต่อไปนี้:

ssh-agent sh -c 'ssh-add && echo Do some stuff here.'

ถ้าคุณไปssh-agent sh -c "ssh-add -l"มันจะบอกคุณว่าคุณไม่มีตัวตน
Ain Tohvri

เพราะคุณต้องเพิ่มก่อนเช่นssh-agent sh -c "ssh-add && ssh-add -l"จะพิมพ์ข้อมูลประจำตัวของคุณ
kenorb

1

ลองนี้: ไปที่C:\$Installation_Folder$\Git\cmd และดำเนินการ:

start-ssh-agent 

มันจะเปิดคำสั่ง cmd และเรียกใช้วิธีssh-agentการที่เหมาะสม

ssh-add ~/.ssh/id_rsa ควรทำงานแล้ว


" bash: start-ssh-agent: ไม่พบคำสั่ง "
IgorGanapolsky

1

นี่คือความสับสนและมี 2 คำตอบที่ดีที่สุดขึ้นอยู่กับว่าผู้ใช้พยายามเพิ่มคีย์ ssh บน Linux หรือบน Windows (อย่างที่ฉันเป็น) นี่อาจไม่ตอบ OP แต่เป็นการขยายสำหรับ git-bash ฉันเรียกใช้ทั้ง Windows และ Ubuntu เพื่อการพัฒนาและการติดตั้งคอมไพล์ของฉันแตกต่างกันเล็กน้อยในแต่ละครั้ง

ลองทำดังนี้: ไปที่ C: \ $ Installation_Folder $ \ Git \ cmd และดำเนินการ:

start-ssh-agent มันจะเปิดคำสั่ง cmd และเรียกใช้ ssh-agent ทางที่ถูกต้อง

.. เป็นคำตอบของ Windows ที่ดี แต่ล้มเหลวในการระบุว่าคุณคาดว่าจะผ่าน Windows Explorer เพื่อค้นหาโฟลเดอร์การติดตั้ง Git และการใช้งานเชลล์ Windows จะเปิดเมื่อขั้นตอนที่ 1 เสร็จสิ้น
"ไปที่ C: \ $ Installation_Folder $ \ Git \ cmd"

ขั้นตอนที่ 2: คุณต้องดับเบิลคลิก

start-ssh-agent

ในขั้นตอนที่ 3 คุณกลับไปที่ git-bash หรือโปรแกรมจำลองเทอร์มินัล * nix ที่คุณกำลังเรียกใช้และรัน ssh-add หากคุณใช้ชื่อเริ่มต้นสำหรับคีย์สาธารณะ ssh คุณไม่จำเป็นต้องเพิ่มชื่อเมื่อใช้ ssh-add ที่ใช้โดยอัตโนมัติ


1

มีสองวิธีคือถ้าคุณต้องการที่จะใช้บัตรใน sudo sudo npm installเช่น

ทางยาวแต่ยังช่วยให้คุณสามารถเข้าถึงรูทได้ดังนั้นคุณไม่จำเป็นต้องใช้sudoอะไรมากมาย

  1. เรียกใช้
    sudo ssh-agent bash
    สิ่งนี้จะถามรหัสผ่านของคุณและหลังจากนั้นจะทำงานssh-agentด้วยสิทธิพิเศษของผู้ใช้ขั้นสูง
  2. นำทางไปยังโฟลเดอร์. ssh ของผู้ใช้
    cd /home/user/.ssh
  3. จากตรงนั้นคุณสามารถวิ่งได้

    ssh-add id_rsa
    npm install git+ssh://git@YOUR-PROJECT-URL -g && npm link PROJECT-NAME
    

ทางลัดผู้ใช้ของคุณเท่านั้น (เว้นแต่คุณต้องการ sudo มาก)

eval "$(ssh-agent)"
ssh-add
sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install git+ssh://git@PROJECT-URL -g && sudo npm link PROJECT-NAME

exportและevalทำงานเช่นเดียวกับรูทเชลล์ล็อกอินของรูทที่จัดไว้ให้นั้นเป็นบอร์น หากเปลือกของรูทเป็น csh หรือ tcsh ให้ใช้eval `ssh-agent -c`
Stéphane Chazelas

โปรดทราบว่าคุณยังสามารถให้rootการเข้าถึงตัวแทน SSH ของคุณโดยการทำsudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install...
Stéphane Chazelas

พยายามทั้งทุบตีเป็น bourne เปลือกอีกครั้งและไม่ทำงานอย่างถูกต้อง ผู้ใช้ทุกคนในอินสแตนซ์เดเบียนเจสซีของฉันรวมถึงรูทถูกตั้งค่าให้ใช้งานทุบตี
Belldandu

คุณลองทำอะไร eval "$(ssh-agent)"ที่พรอมต์ของเชลล์ bash ที่รันในขณะที่รูทจะทำงาน คุณจะต้องเรียกใช้sshจากเชลล์นั้นหรือลูกหลานของมันอย่างชัดเจนเพื่อให้สืบทอด SSH_AUTH_SOCK env var eval "$(sudo ssh-agent)"; sudo ssh...จะไม่ทำงานเพราะsudoโดยค่าเริ่มต้นจะไม่ผ่าน SSH_AUTH_SOCK env var
Stéphane Chazelas

ฉันพยายามeval "$(ssh-agent)"จะดูในภายหลังเพื่อดูว่ามีข้อผิดพลาดการกำหนดค่าบางอย่าง แม้ว่าวิธีปัจจุบันที่ฉันได้รับคู่มือนี้ช่วยให้สามารถควบคุมผู้ใช้ที่คุณต้องการให้เป็นรูทของคุณได้ฟรีและสามารถเข้าถึงผู้ใช้ id_rsa thats บนเซิร์ฟเวอร์ได้ ดังนั้นเมื่อฉันทำให้มันทำงานไม่ถูกต้องแก้ไขคำตอบของฉัน
Belldandu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.