Chạy một lệnh từ xa bằng cách sử dụng tập tin cấu hình ssh


32

Tôi muốn có thể thiết lập một lệnh để chạy khi đăng nhập ssh vào máy chủ mà không cần phải gõ nó. Về cơ bản tôi đang tìm kiếm tập tin cấu hình ssh tương đương với:

ssh host command

để tất cả những gì tôi cần gõ là:

ssh host

và lệnh được chạy.

Câu trả lời:


16

Cũng có thể chèn một lệnh trong tệp khóa được ủy quyền của bạn. ( ~/.ssh/authorized_keys). Điều này cho phép bạn thực thi một lệnh tùy chỉnh cho từng khóa trong tệp. Tôi sử dụng điều này để chuyển tiếp các kết nối shell thông qua tường lửa của tôi. Kết quả là tôi có thể ssh đến một máy chủ và nó tự động kết nối phiên với một máy chủ trong mạng. Các authorized_keysentry trông như thế này:

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 ...

Cụ thể hơn là chuyển hướng là ví dụ gitolite của tôi. Điều này cho phép truy cập bên ngoài đơn giản mà không cần tiếp xúc trực tiếp với máy chủ gitolite với bất kỳ quyền truy cập bên ngoài nào. Kiểm tra trang người đàn ông để biết thêm. ( http://linux.die.net/man/8/sshd )


1
Điều này thật tuyệt vời, không biết bạn có thể làm điều này. +1
Brian Wigginton

3
Nếu bạn đặt lệnh trong tệp ủy quyền của bạn, nó sẽ phá vỡ những thứ như rsync và scp - bạn sẽ nhận được một cái gì đó như thế này: mở thiết bị đầu cuối thất bại: không phải là thiết bị đầu cuối. Ngoài ra, hãy lưu ý rằng nếu lệnh thất bại, bạn sẽ không thể đăng nhập. Tôi đã phát hiện ra điều này một cách khó khăn.
John Hunt

11

Nếu bạn đang chạy OpenSSH, có vẻ như ~/.ssh/rcđược thực thi khi đăng nhập .


3
Được /.ssh/rcđặt trên máy khách hoặc máy chủ? Hình như từ tài liệu của máy chủ, phải không?
heavyyd

1
Vâng, đó sẽ là trên máy chủ.
coneslayer

Thật không may, rctập tin dường như không chạy được những thứ như screen, gặp lỗi "Phải được kết nối với thiết bị đầu cuối"
davidparks21

10

Bạn có thể thiết lập một bí danh bash.

Trong tệp .bashrc của bạn, đặt:

alias ssl='ssh some_host run_command'

Sau đó, bạn thậm chí sẽ không phải nhập tên máy chủ.

Hoặc, nếu bạn muốn làm điều này với nhiều máy chủ (và nhiều bí danh sẽ không hoạt động), thì hãy sử dụng một tập lệnh nhỏ:

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

2

Bạn lạnh lùng giải quyết điều này trong .ssh/config filemáy chủ của bạn, nơi bạn muốn thực thi một lệnh, thêm

  RequestTTY yes
  RemoteCommand <some command>

<some command>lệnh của bạn ở đâu Điều này cũng hoạt động với màn hình hoặc tmux.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.