Tôi không chắc làm thế nào bạn có thể đặt cục bộ của mình .zshrc
vào máy chủ từ xa, (mà không lưu trữ vĩnh viễn ở đó), điều này giúp tôi thay đổi vỏ đăng nhập của mình trên máy chủ từ xa.
Vì đó là tài khoản dùng chung, tôi chỉ có thể sử dụng zsh
cho bản thân mình với phương pháp này.
Thêm phần này vào ~/.ssh/config
tập tin của bạn trong máy cục bộ của bạn.
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
Có thể có cách hackish để thực hiện những gì bạn đang tìm kiếm, như dưới đây.
CẢNH BÁO Điều này không có gì đảm bảo và không có vẻ 'khôn ngoan', tuy nhiên tôi đã quản lý để đưa tệp cục bộ của mình lên máy chủ và lấy nó trong vỏ đăng nhập bằng cách này.
Host someHost
HostName someIP
IdentityFile ~/.ssh/somekey.pem
RemoteCommand zsh -l -c 'sleep 1; source /tmp/somefile; zsh'
PermitLocalCommand yes
LocalCommand bash -c 'sftp %r@%h <<< "put /tmp/somefile /tmp/somefile"'
RequestTTY force
User someUser
Làm thế nào nó hoạt động?
RemoteCommand
xác định những gì cần phải được chạy ở phía xa.
LocalCommand
định nghĩa những gì cần được chạy trên cục bộ, được sử dụng để sao chép tệp cục bộ của bạn vào máy chủ từ xa để tìm nguồn cung ứng. Đây là một nhược điểm, nó chỉ xảy ra sau khi kết nối 'thành công' với máy chủ từ xa.
Ý nghĩa:
- Kết nối của bạn với điều khiển từ xa phải mở và sống động
- Shell từ xa của bạn chưa có tệp, vì vậy nó phải đợi cho đến khi tệp ở đó, ergo
sleep
- Sử dụng cục bộ của bạn
sftp
để đặt tệp của bạn đến máy chủ từ xa, máy chủ từ xa thức dậy sleep
và lấy các tập lệnh của bạn.
Đó là siêu hackish, tôi muốn biết nếu có một cách tốt hơn, quá.
Cập nhật: Điều này có thể được sử dụng thay vì thời gian ngủ 'dài':
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
/etc/shells
trình bao để có thể chọn.