.ssh / configはzshでリモートセッションを開始します


11

次のコマンドを入力せずにリモートセッションを開始したい

ssh user@remoteserverip -t zsh

のホスト名を変更して、~/.ssh/config次のようなものを使用できることを知っています。

ssh serveralias -t zsh

しかし、-t zshパラメーターを削除したいと思います。

関数を書かずにこれを達成する方法はありますか?


回答:


6

私はそれが可能ではないと思います~/.ssh/config-t追加することでカバーすることができるRequestTTY yesが、あなたがリモートコマンドを指定することができていないようです~/.ssh/config

ただし、ではzsh、次のものを追加できます。

alias -g 'serveralias=serveralias -t zsh'

あなたに~/.zshrc

または、次のような関数を作成します。

zssh() ssh "$@" -t zsh

それはalias本当に正しいですか?あなたの引用を確認してください。
CVn 2013

私はこの解決策に行くと思います!
brngp 2013

5

@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、特定のシェルを起動して、リモートマシンでコマンドを実行しますか?


command="exec zsh"悪い考えです:明示的なコマンドでsshを実行することを不可能にします(そういうわけでscp、rsyncなど)。unix.stackexchange.com/a/20739は、これを適切に行う方法を示しています。
Gilles「SO-邪悪なことをやめ

authorized_keysを使用してコマンドを実行できることを知りませんでした。それはかなりいい考えですが、ジルが指摘した問題なので、ステファンからの解決策を使用します。ありがとう
brngp

@ギレス-ええ、私はあなたの解決策を見つけて、ここに潜在能力を示しました、ここにあなたの解決策を単にコピーしたくないので、私は私の答えの一番下であなたの解決策を参照しました。
slm

4

数年後にここに到着する人にとっては、2017年からすべてを設定ファイルに入れることが可能です:

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

2019年のベストアンサー。この回答にはさらに投票が必要です!
geekQ


0

システムシェル設定を変更することをお勧めします。

  1. 通常どおりサーバーに接続します。 ssh serveralias
  2. 実行chshしてシステムシェルを変更する
  3. Enter /bin/zshしてzshに設定します
  4. 再接続するssh serveraliasと表示されます%

chsh [username] 再接続せずに他のユーザーの設定を変更するために使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.