.ssh / config để bắt đầu phiên từ xa trong zsh


11

Tôi muốn bắt đầu một phiên từ xa mà không cần gõ lệnh sau

ssh user@remoteserverip -t zsh

Tôi biết rằng tôi có thể thay đổi tên máy chủ ~/.ssh/configđể chỉ sử dụng một cái gì đó như thế này:

ssh serveralias -t zsh

Nhưng tôi muốn loại bỏ -t zshtham số.

Có cách nào để đạt được điều này mà không cần viết một chức năng?


Câu trả lời:


6

Tôi không nghĩ rằng điều đó là có thể với ~/.ssh/config. Có -tthể được bao phủ bằng cách thêm một RequestTTY yes, nhưng có vẻ như bạn không thể chỉ định lệnh từ xa ~/.ssh/config.

Tuy nhiên, với zsh, bạn có thể thêm:

alias -g 'serveralias=serveralias -t zsh'

để của bạn ~/.zshrc.

Hoặc thực hiện một chức năng như:

zssh() ssh "$@" -t zsh

Điều đó có aliasthực sự đúng không? Kiểm tra báo giá của bạn.
một CVn

Tôi nghĩ rằng tôi sẽ đi với giải pháp này cảm ơn!
brngp

5

Tôi đồng ý với @Stephane rằng không có cách nào để làm điều này bằng cách sử dụng ~/.ssh/config file. Một cách tiếp cận khác là sử dụng ~/.ssh/authorized_keystệp trên máy chủ từ xa. Nếu bạn thêm một dòng như thế này:

command="exec zsh" ssh-dss ..... rest of key ....

Sau đó, bạn có thể chỉ cần ssh như bình thường và bạn sẽ nhận được một zsh trên máy chủ từ xa.

Thí dụ

Trên máy chủ, ssh đến từ xa.

$ ssh saml@greeneggs

Trên máy chủ từ xa, xác nhận chúng tôi đang ở a zsh.

[saml@greeneggs]~% ps -eaf|grep $$
saml      1974  1973  1 10:34 pts/3    00:00:00 zsh
saml      2023  1974  0 10:34 pts/3    00:00:00 ps -eaf
saml      2024  1974  0 10:34 pts/3    00:00:00 grep --color=auto 1974

Bạn có thể thực hiện những điều phức tạp hơn bằng cách sử dụng tệp này, xem Hỏi & Đáp này, có tiêu đề: ssh, khởi động một vỏ cụ thể và chạy lệnh trên máy từ xa? .


command="exec zsh"là một ý tưởng tồi: nó làm cho không thể chạy ssh bằng một lệnh rõ ràng (vì vậy tạm biệt scp, rsync, Nott). unix.stackexchange.com/a/20739 chỉ ra cách thực hiện điều này một cách khéo léo .
Gilles 'SO- ngừng trở nên xấu xa'

Tôi không biết rằng có thể sử dụng ủy quyền để thực thi các lệnh. đó là một ý tưởng khá hay, nhưng tôi sẽ sử dụng giải pháp từ stephane vì vấn đề được chỉ ra bởi Gilles. Cảm ơn
brngp

@Gilles - yeah Tôi đã tìm thấy giải pháp của bạn và chỉ cho thấy tiềm năng ở đây, không muốn chỉ sao chép giải pháp của bạn ở đây, đó là lý do tại sao tôi giới thiệu giải pháp của bạn ở cuối câu trả lời của tôi.
slm

4

Đối với bất kỳ ai đến đây nhiều năm sau, kể từ năm 2017, có thể đặt mọi thứ vào tệp cấu hình:

Host host_1
    HostName 1.2.3.4
    User root
    Port 22
    RequestTTY yes
    RemoteCommand zsh

Câu trả lời hay nhất vào năm 2019. Câu trả lời này cần nhiều sự ủng hộ hơn!
geekQ


0

Bạn nên thay đổi cài đặt hệ thống.

  1. Kết nối với máy chủ bình thường. ssh serveralias
  2. Thực thi chshđể thay đổi hệ thống vỏ
  3. Nhập /bin/zshđể đặt thành zsh
  4. Kết nối lại ssh serveraliasvà nó sẽ hiển thị%

chsh [username] có thể được sử dụng để thay đổi cài đặt của người dùng khác mà không cần kết nối lại.

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.