次のコマンドを入力せずにリモートセッションを開始したい
ssh user@remoteserverip -t zsh
~/.ssh/config
のホスト名を変更して、次のようなものを使用できることを知っています。
ssh serveralias -t zsh
しかし、-t zsh
パラメータを削除したいと思います。
関数を書かずにこれを達成する方法はありますか?
~/.ssh/config
ではそれは不可能だと思います。 -t
はRequestTTY yes
を追加することでカバーできますが、~/.ssh/config
でリモートコマンドを指定できないようです。
ただし、zsh
を使用すると、以下を追加できます。
alias -g 'serveralias=serveralias -t zsh'
あなたの~/.zshrc
に。
または、次のような関数を作成します。
zssh() ssh "$@" -t zsh
@Stephaneには、~/.ssh/config file
を使用してこれを行う方法がないことに同意します。別のアプローチは、リモートサーバー上の~/.ssh/authorized_keys
ファイルを使用することです。次のような行を追加すると、
command="exec zsh" ssh-dss ..... rest of key ....
その後、通常どおりsshを実行すると、リモートサーバーでzshが取得されます。
サーバーで、リモートにSSHで接続します。
$ ssh saml@greeneggs
リモートサーバーで、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
このファイルを使用して、より手の込んだことを行うことができます。このQ&Aのタイトルの ssh、特定のシェルを起動し、リモートマシンでコマンドを実行しますか? を参照してください。
数年後にここに到着する人にとっては、2017年以降、すべてを設定ファイルに入れることが可能です:
Host host_1
HostName 1.2.3.4
User root
Port 22
RequestTTY yes
RemoteCommand zsh
Sudo usermod -s /bin/zsh yourusername
システムのシェル設定を変更することをお勧めします。
ssh serveralias
chsh
を実行してシステムシェルを変更します/bin/zsh
と入力してzshに設定しますssh serveralias
に再接続すると、%
が表示されますchsh [username]
を使用すると、再接続せずに他のユーザーの設定を変更できます。