วิธี. ssh / config เพื่อระบุการจัดสรร pseudo-tty และการดำเนินการคำสั่ง


13

มีวิธีการระบุใน.ssh/configคำสั่งเช่น:

ssh -t remote-host "screen -dR screen_name"

ดังนั้นฉันสามารถเข้าถึงscreenเซสชันระยะไกลได้อย่างง่ายดายด้วยssh remote-host?

ตอนนี้ฉันแก้ไขปัญหานี้โดยใช้สคริปต์ที่กำหนดเอง:

$ cat ~/bin/sssh 
#!/bin/sh

/usr/bin/ssh -t $1 "screen -dR ab"

~/binยังคงอยู่ก่อน$PATHแต่มันไม่ยืดหยุ่นและน่าเกลียด

นอกจากนี้ฉันต้องการค้นหาวิธีใช้การเติมข้อความอัตโนมัติของโฮสต์สำหรับสคริปต์ที่กำหนดเองของฉัน


ผมจะเข้ามาแทนที่ด้วย$1 $@จากนั้นคุณสามารถเพิ่มตัวเลือกเพิ่มเติมไม่ใช่แค่ชื่อโฮสต์ สำหรับการดำเนินการให้เสร็จสิ้นให้ลองดำเนินการ. /usr/share/bash-completion/completions/sshตามด้วยcomplete -F _ssh sssh
Alex Stragies

คำตอบ:


17

หากต้องการจัดสรร tty ตามที่คุณต้องการพร้อม-tตัวเลือกให้ใส่RequestTTY forceเป็นรายการในไฟล์ ssh config (โดยปกติคือ~/.ssh/config) หากต้องการดำเนินการคำสั่งบนเซิร์ฟเวอร์ทุกครั้งหลังจากที่คุณเชื่อมต่อให้ใส่RemoteCommand COMMANDในรายการซึ่งCOMMANDเป็นคำสั่งที่คุณต้องการเรียกใช้เมื่อเชื่อมต่อ สำหรับตัวเลือกอื่น ๆ man ssh_configให้ตรวจสอบ

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name


1

ฉันขอยืนยันว่านี่เป็นวิธีที่ยืดหยุ่นที่สุด สคริปต์อนุญาตให้คุณตั้งค่าพารามิเตอร์เพิ่มเงื่อนไขเปลี่ยนคำสั่งตามต้องการทั้งหมดขึ้นอยู่กับอินพุต

มีวิธีการ "บังคับ" authorized_keysคำสั่งในการเป็น แต่ฉันไม่รู้วิธีที่จะบังคับให้มีการจัดสรร tty ยกเว้นจาก command-line หรือบังคับให้คำสั่งบนเซิร์ฟเวอร์ระยะไกลจากไฟล์ config ด้านในเครื่อง

ฉันเองมีสคริปต์ที่สแกนไฟล์ปรับแต่งตรวจสอบ DNS กับโดเมนต่างๆและตั้งค่าสตริงชื่อเรื่องของเทอร์มินัลอีมูเลเตอร์ ฉันเรียกมันจากหน้าจอในระบบท้องถิ่นของฉัน ( Ctrl-a g)


0

หมายเหตุ: การRemoteCommandเริ่มต้นการทำงานกับOpenSSH 7.6 ในเวอร์ชันก่อนหน้า (เช่นเดเบียนปัจจุบัน 9.9) ไคลเอ็นต์ ssh จะหยุดทำงานอย่างถูกต้อง (อย่างน้อยก็ด้วยgit pull)

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