ラベル tmux の投稿を表示しています。 すべての投稿を表示
ラベル tmux の投稿を表示しています。 すべての投稿を表示

2023年6月27日火曜日

macのtmux上でssh時に何度もパスワードを求められる場合に確認する項目

macのtmux上でssh時に何度もパスワードを求められる場合に確認する項目

概要

mac 上でターミナルを使っていると自動でキーチェインが起動しパスワードを覚えてくれます
2度目以降のログインでは同じパスワードを使ってくれるので入力の必要がありません
しかし tmux を経由しているとなぜかパスワードが何回も求められてしまいます
そんなときの対処方法を紹介します

環境

  • macOS 13.4
  • デフォルトシェル zsh

とりあえず解決方法

  • ssh-add ~/.ssh/id_rsa

これでパスワードを登録すれば次回以降はパスワードを求められなくなります

確認すること

  • echo $SSH_AUTH_SOCK

でちゃんと ssh-agent のパスが表示されることを確認しましょう
echo は tmux を起動した上で実行してください
これが設定されていないとパスワードを覚えてくれません
ちなみに 13.4 だと以下のように表示されます

/private/tmp/com.apple.launchd.undAdGmmSD/Listeners

もし設定されていない場合は .tmux.conf に以下を記載してください

set-environment -g SSH_AUTH_SOCK $SSH_AUTH_SOCK

これで tmux を起動していない zsh 上の SSH_AUTH_SOCK の設定が tmux 上でも引き継がれ ssh-agent がデフォルトで動作するようになります

2021年12月29日水曜日

tmux + zsh で PATH が複数回セットされてしまう場合の対処方法

tmux + zsh で PATH が複数回セットされてしまう場合の対処方法

概要

ターミナル起動時に .zshrc が呼ばれ更にターミナル上で tmux が起動していると tmux のセッション開始時に再度 .zshrc が呼ばれることで PATH が再度末尾に結合されてしまう現象が発生します

環境

  • macOS 11.6.2
  • tmux 3.1c

対象方法

  • vim .zshrc

で最後に以下を追記します
これで後から追加したパスは削除してくれます

typeset -U PATH

注意点

この方法だと意図しない PATH の上書きしか対処できません
.zshrc はセッション開始時に呼ばれるのは呼ばれるので他に複数回実行されたくない命令が .zshrc に記載れている場合はそれは別途対応しなければならないので注意してください

参考サイト

2021年6月5日土曜日

Windows (Cygwin) 上の tmux でコピーモードを使う方法

Windows (Cygwin) 上の tmux でコピーモードを使う方法

概要

cygwin を使ってインストールした tmux でコピーモードを使う方法を紹介します

環境

  • Windows10
  • tmux 3.1b
  • cygwin (mintty) 3.4.6

必要なツールのインストール

  • apt-cyg install cygutils-extra
  • apt-cyg install libiconv libiconv-devel

上で「putclip」コマンドをインストールし下で「iconv」コマンドをインストールします

.tmux.conf の編集

vi モードで使います コピーモードでリージョン選択した状態の「y」キーと「Enter 」キーを putclip に流します

文字化け対策として iconv を使って文字コードを変更してからクリップボードにコピーする感じです

# Copy mode using vi  
set-window-option -g mode-keys vi  
if-shell "which putclip" ' \  
  bind-key -T copy-mode-vi v send-keys -X begin-selection; \  
  bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "/usr/bin/iconv -s -t SJIS | /usr/bin/putclip"; \  
  bind-key -T copy-mode-vi enter send-keys -X copy-pipe-and-cancel "/usr/bin/iconv -s -t SJIS | /usr/bin/putclip"; \  
'

if-shell を使っているので他のプラットフォームでは読み込まれないよにしています