เรียกใช้คำสั่งระยะไกลโดยใช้ไฟล์ ssh config


32

ฉันต้องการที่จะสามารถตั้งค่าคำสั่งให้ทำงานในการเข้าสู่ระบบ ssh ไปยังเซิร์ฟเวอร์โดยไม่จำเป็นต้องพิมพ์ โดยทั่วไปฉันกำลังมองหาไฟล์ ssh config เทียบเท่า:

ssh host command

ดังนั้นสิ่งที่ฉันต้องพิมพ์คือ:

ssh host

และคำสั่งจะถูกเรียกใช้

คำตอบ:


16

นอกจากนี้ยังเป็นไปได้ที่จะแทรกคำสั่งในไฟล์คีย์ที่ได้รับอนุญาตของคุณ ( ~/.ssh/authorized_keys) สิ่งนี้ช่วยให้คุณสามารถรันคำสั่งที่กำหนดเองสำหรับแต่ละคีย์ในไฟล์ ฉันใช้สิ่งนี้เพื่อส่งต่อการเชื่อมต่อเชลล์ผ่านไฟร์วอลล์ของฉัน ผลลัพธ์คือฉันสามารถ ssh หนึ่งโฮสต์และมันจะเชื่อมต่อเซสชันกับโฮสต์ภายในเครือข่ายโดยอัตโนมัติ authorized_keysรายการลักษณะเช่นนี้:

command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...

โดยเฉพาะอย่างยิ่งการเปลี่ยนเส้นทางสำหรับอินสแตนซ์ของ gitolite ของฉัน การทำเช่นนี้ช่วยให้สามารถเข้าถึงจากภายนอกได้ง่ายโดยไม่เปิดเผยโฮสต์ gitolite โดยตรงกับการเข้าถึงภายนอก ตรวจสอบหน้า man สำหรับข้อมูลเพิ่มเติม ( http://linux.die.net/man/8/sshd )


1
มันเยี่ยมมากไม่รู้ว่าคุณทำได้ +1
Brian Wigginton

3
หากคุณใส่คำสั่งในไฟล์ authorized_keys คำสั่งนี้จะทำลายสิ่งต่าง ๆ เช่น rsync และ scp คุณจะได้รับสิ่งนี้: เทอร์มินัลเปิดล้มเหลว: ไม่ใช่เทอร์มินัล นอกจากนี้โปรดระวังว่าหากคำสั่งล้มเหลวคุณจะไม่สามารถเข้าสู่ระบบได้ ฉันค้นพบสิ่งนี้ด้วยวิธีที่ยากลำบาก
John Hunt

11

ถ้าคุณกำลังเรียก OpenSSH ดูเหมือนว่า~/.ssh/rcจะดำเนินการเมื่อเข้าสู่ระบบ


3
เป็นที่/.ssh/rcตั้งอยู่บนเครื่องไคลเอ็นต์หรือเซิร์ฟเวอร์หรือไม่ ดูเหมือนว่าจากเอกสารของเซิร์ฟเวอร์ใช่ไหม
หนัก

1
ใช่ว่าจะเป็นในเครื่องเซิร์ฟเวอร์
coneslayer

แต่น่าเสียดายที่rcไฟล์ดูเหมือนจะล้มเหลวในการเรียกใช้สิ่งต่าง ๆ เช่นscreenได้รับข้อผิดพลาด "ต้องเชื่อมต่อกับขั้ว"
davidparks21

10

คุณสามารถตั้งค่านามแฝงทุบตี

ในไฟล์. bashrc ของคุณให้ใส่:

alias ssl='ssh some_host run_command'

จากนั้นคุณไม่ต้องพิมพ์ชื่อโฮสต์

หรือถ้าคุณต้องการทำสิ่งนี้กับโฮสต์หลาย ๆ ตัว (และนามแฝงหลายตัวไม่ทำงาน) ให้ใช้สคริปต์ขนาดเล็ก:

kevin@box:~$ cat ssl.sh
#!/bin/sh
ssh $1 some_command
kevin@box:~$

2

คุณเย็นแก้ปัญหานี้ในของคุณ.ssh/config fileสำหรับโฮสต์ที่คุณต้องการรันคำสั่งเพิ่ม

  RequestTTY yes
  RemoteCommand <some command>

<some command>คำสั่งของคุณอยู่ที่ไหน สิ่งนี้ยังใช้งานได้กับหน้าจอหรือ tmux

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.