:::: MENU ::::
Posts tagged with: ssh

SSH接続後にCan’t open display等でXが起動出来ない

sshで接続先のX Windowsを利用したGUIアプリを起動すると、よく下記のエラーなどで陥る罠

Error: Can't open display:
unable to open X server `'
unable to open display :0.0
Warning: No display specified. You will not be able to display graphics on the screen.

Xの環境変数やら、ディスプレイ番号も絡んで来ると思いきや、SSH接続でX転送が有効になっていない事が多々あるのでメモ

$ ssh -Y <remote_host>

接続後に、リモートホスト側のXアプリを起動。


mosh-serverのプロセスをkillする方法

moshは便利に利用してますが、いろんな端末からログインした後などで放っておいたりすると、プロセスがdeatacheのまま生きてます。

Mosh: You have 2 detached Mosh sessions on this server, with PIDs:
mosh [3700]
mosh [31091]

screenのように、これらのセッションをreatache出来れば良いのですが、moshではセキュリティ上出来ないようです。

再度、deatacheした端末でreatacheするしかありませんが、もう、これらのセッションを利用しない場合には、一旦、全てのプロセスをkillした方がスッキリしますね。

で、全てのmosh-serverプロセスをkillするには、下記にて。

kill `pidof mosh-server`

ちなみに、moshで接続してkillすると、強制的にログアウトされます。当然ですけど 😛


SSH公開鍵の再作成

よそからのSSH公開鍵をコピーしたりしてきたときに、自分とこ(~/.ssh/)にid_rsa.pubなりid_dsa.pubを上書きしてしまう事があり、自分の公開鍵が紛失してしまうことになります。 そんな時には、秘密鍵から公開鍵を再作成する事が出来るので、メモ。

上書きされたid_rsa.pubは削除しておき、

$ cd ~/.ssh
$ ssh-keygen -y -f id_rsa > id_rsa.pub

id_dsaの場合も同じ


Macでssh-copy-id

Macには、標準でssh-copy-idが入ってないので、不便。

利用するには、

  • Homebrew導入済みの場合は、
    # brew install ssh-copy-id
  • Homebrewを利用しない場合は、他のLinuxからssh-copy-idをコピーしてくる
    (ssh-copy-idは、単なるシェルスクリプトなので、動くはず)
参考までに、利用の流れは、
  1. ローカル側で、パスフレーズなしの鍵作成
    $ ssh -t rsa
  2. ssh-copy-idを利用して、公開鍵をリモートへコピー
    $ ssh-copy-id -i ~/.ssh/id_rsa.pub foo@remote.server
  3. リモート側のパスワードを聞かれるので、入力
  4. リモート側のAuthorized_keyに鍵が保存される
  5. ローカル側からリモート側へ、SSH接続し、パスなしにログインできれば完了

MacのSSHクライアントでkeep-alive

MacのSSHクライアントでは、iTermか標準ターミナルをよく利用していますが、ちょっと席を離れて、戻ってくると、接続を切られることがよくあります。

一定時間パケットの流れないコネクションを接続断と判断されてしまうので、SSHに限ったことではないが、このような場合、Keep Aliveを使います。

iTermでは、PreferenceのProfilesから、Sessionタブ「When idle, send ASCII code」が該当するので、ここに、数字の0か20を入力し、チェックマークを入れれば良いのですが、標準ターミナルでは、Keep Aliveの設定が見当たりません。

なので、ここは、通常Linux/Unix同様に、~/.ssh/config内に下記を記述することで対処します
(configファイルがなければ、作成します)

$ vi ~/.ssh/config
ServerAliveInterval 300
TCPKeepAlive yes

5分おきにパケットを送信する事で、切断を防ぎます。