code-404.net
ホーム
login
複数のログインセッションで同じ `ssh-agent` を共有する

複数のログインセッションで同じ `ssh-agent` を共有する

login
TwitterFacebookはてブPocketLINEPinterestLinkedInコピー
2020.11.07 2020.10.28
login session ssh ssh-agent

特定のユーザ (つまり私) からのすべてのログインが同じ ssh-agent を使用することを確実にする便利な方法はありますか?私はほとんどの場合、これを動作させるためのスクリプトをハックアウトしましたが、私が見落としていた方法があるのではないかとずっと疑っていました。さらに、その時以来、例えばこのウェブサイトのようなコンピュータ技術の驚くべき進歩がありました

ここでのゴールはそれなんですね

  • SSH 経由であろうと、gdm/kdm/etc から起動したグラフィカルなセッションであろうと、コンソールであろうと、ボックスにログインしたときにはいつでも、次のようになります
    • もし私のユーザ名が現在 ssh-agent を実行していない場合、ssh-agent が起動され、環境変数がエクスポートされ、ssh-add が呼び出されます
    • そうでなければ、ログインセッションの環境変数に既存のエージェントの座標がエクスポートされます

この機能は、問題のボックスが ssh を第三のボックスに接続する際の中継地点として使用される場合に特に有用です。この場合、秘密鍵のパスフレーズを毎回入力しなくてもよくなります

以下のスクリプトはほぼ確実にこれを実行しますが、最近 X がクラッシュして別のグラフィカルなセッションを開始したときに失敗しました。その場合、他にも何か問題があったのかもしれません

これが私のバッド・イズ・グッド・スクリプトです。これは私の.bashrcからのソースです

# ssh-agent-procure.bash
# v0.6.4
# ensures that all shells sourcing this file in profile/rc scripts use the same ssh-agent.
# copyright me, now; licensed under the DWTFYWT license.

mkdir -p "$HOME/etc/ssh";

function ssh-procure-launch-agent {
eval `ssh-agent -s -a ~/etc/ssh/ssh-agent-socket`;
ssh-add;
}

if [ ! $SSH_AGENT_PID ]; then
if [ -e ~/etc/ssh/ssh-agent-socket ] ; then
SSH_AGENT_PID=`ps -fC ssh-agent |grep 'etc/ssh/ssh-agent-socket' |sed -r 's/^\S+\s+(\S+).*$/\1/'`;
if [[ $SSH_AGENT_PID =~ [0-9]+ ]]; then
# in this case the agent has already been launched and we are just attaching to it.
##++  It should check that this pid is actually active & belongs to an ssh instance
export SSH_AGENT_PID;
SSH_AUTH_SOCK=~/etc/ssh/ssh-agent-socket; export SSH_AUTH_SOCK;
else
# in this case there is no agent running, so the socket file is left over from a graceless agent termination.
rm ~/etc/ssh/ssh-agent-socket;
ssh-procure-launch-agent;
fi;
else
ssh-procure-launch-agent;
fi;
fi;

もっと良い方法があるのか教えてください。また、矛盾している点や問題点(例えば、varのものをetcに入れるなど)を指摘しないでください

  69  intuited  2010-05-14


ベストアンサー

私も自分のバリエーションを 混ぜてみた方がいいかもしれない

function sshagent_findsockets {
find /tmp -uid $(id -u) -type s -name agent.\* 2>/dev/null
}

function sshagent_testsocket {
if [ ! -x "$(which ssh-add)" ] ; then
echo "ssh-add is not available; agent testing aborted"
return 1
fi

if [ X"$1" != X ] ; then
export SSH_AUTH_SOCK=$1
fi

if [ X"$SSH_AUTH_SOCK" = X ] ; then
return 2
fi

if [ -S $SSH_AUTH_SOCK ] ; then
ssh-add -l > /dev/null
if [ $? = 2 ] ; then
echo "Socket $SSH_AUTH_SOCK is dead!  Deleting!"
rm -f $SSH_AUTH_SOCK
return 4
else
echo "Found ssh-agent $SSH_AUTH_SOCK"
return 0
fi
else
echo "$SSH_AUTH_SOCK is not a socket!"
return 3
fi
}

function sshagent_init {
# ssh agent sockets can be attached to a ssh daemon process or an
# ssh-agent process.

AGENTFOUND=0

# Attempt to find and use the ssh-agent in the current environment
if sshagent_testsocket ; then AGENTFOUND=1 ; fi

# If there is no agent in the environment, search /tmp for
# possible agents to reuse before starting a fresh ssh-agent
# process.
if [ $AGENTFOUND = 0 ] ; then
for agentsocket in $(sshagent_findsockets) ; do
if [ $AGENTFOUND != 0 ] ; then break ; fi
if sshagent_testsocket $agentsocket ; then AGENTFOUND=1 ; fi
done
fi

# If at this point we still haven't located an agent, it's time to
# start a new one
if [ $AGENTFOUND = 0 ] ; then
eval `ssh-agent`
fi

# Clean up
unset AGENTFOUND
unset agentsocket

# Finally, show what keys are currently in the agent
ssh-add -l
}

alias sagent="sshagent_init"

そして、ログインするたびに、エージェントが必要な場合は(いつもではありませんが)、sagentと入力するだけです

28  Zed  2010-05-14


ssh -A [user@]remotehost

これでいいのではないでしょうか。sshを実行しているときに-Aスイッチを使ってssh-agentを転送します。ここにユースケースがあります

私は、リモートサーバー上にいくつかのgitリポジトリを持っていて、リモートからgithubを指しています。スクリーンセッションで ssh-agent を実行していないと、”git pull origin master” を実行するために自分の鍵のパスフレーズを入力しなければなりません。ブー!さらに、私の秘密鍵をリモートサーバにインストールしておかなければなりません

代わりに、単に ssh -A [user@]remotehost を使うだけで、ローカルで実行している ssh-agent を渡します。これで、私の秘密鍵がリモートホスト上に存在する必要がなくなりました。ssh-agent を使ってスクリプトを書く必要はないと思います

41  h355ian  2011-02-24


これはCygwinでも動作するとても良いものです

SSH_ENV=$HOME/.ssh/environment

function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -efp ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

.bash_profile または .bashrc に追加してください

ソースは以下の通りです。http://www.cygwin.com/ml/cygwin/2001-06/msg00537.html

20  vonhogen  2011-01-09


そのために作られたキーホルダーを使ってみてください。http://www.gentoo.org/doc/en/keychain-guide.xml

11  kev  2011-01-09


私はできるだけシンプルなものを好む。(~/.profileからのスニペット)

check-ssh-agent() {
[ -S "$SSH_AUTH_SOCK" ] && { ssh-add -l >& /dev/null || [ $? -ne 2 ]; }
}

# attempt to connect to a running agent
check-ssh-agent || export SSH_AUTH_SOCK="$(< ~/.tmp/ssh-agent.env)"
# if agent.env data is invalid, start a new one
check-ssh-agent || {
eval "$(ssh-agent -s)" > /dev/null
echo "$SSH_AUTH_SOCK" > ~/.tmp/ssh-agent.env
}

今まで-aを使おうとは思いませんでしたが、その方が楽かもしれませんね

check-ssh-agent || export SSH_AUTH_SOCK=~/.tmp/ssh-agent.sock
check-ssh-agent || eval "$(ssh-agent -s -a ~/.tmp/ssh-agent.sock)" > /dev/null

7  user1686  2010-05-14


最近使い始めました

GitHub - ccontavalli/ssh-ident: Different agents and different keys for different projects, with ssh.
Different agents and different keys for different projects, with ssh. - ccontavalli/ssh-ident
github.com

追加するだけでいいんだよ

  alias ssh=/path/to/ssh-ident

私の.bashrcファイルにスクリプトが処理してくれます

  • 最初に必要とされるときにエージェントを作成します
  • 必要なキーをオンデマンドでロードします
  • 複数のログインセッションでエージェントを共有することができます
  • 複数のエージェントを管理し、オンラインで使用する’ID’ごとに1つずつ管理し、接続先のホストや現在の作業ディレクトリに基づいて適切なエージェントを使用します

7  MarkMo  2013-03-15


これは、https://superuser.com/a/141233/5255(このスレッドで)から適応された私のソリューションです

# attempt to connect to a running agent - cache SSH_AUTH_SOCK in ~/.ssh/
sagent()
{
[ -S "$SSH_AUTH_SOCK" ] || export SSH_AUTH_SOCK="$(< ~/.ssh/ssh-agent.env)"

# if cached agent socket is invalid, start a new one
[ -S "$SSH_AUTH_SOCK" ] || {
eval "$(ssh-agent)"
ssh-add -t 25920000 -K ~/.ssh/id_rsa
echo "$SSH_AUTH_SOCK" > ~/.ssh/ssh-agent.env
}
}

2  Ether  2015-03-06


私の場合は、posh-git を PowerShell で設定し、cygwin にも同じ ssh-agent を使わせたいと思っていました。異なる tmp フォルダを使うのでパス操作をしなければならず、作成された .env ファイルは UTF16 で BOM と CR\LF を使用していたので、それを処理するのが面白かったです。cygwin が使用している .bashrc に以下を追加するとうまくいくはずです

# Connect to ssh-agent started by posh-git
SSH_AGENT_ENV=$(cygpath "$LOCALAPPDATA\Temp")
if [ -z $SSH_AUTH_SOCK ] && [ -z $SSH_TTY ]; then  # if no agent & not in ssh
if [ -f "$SSH_AGENT_ENV/.ssh/SSH_AUTH_SOCK.env" ]; then
AUTH_SOCK=$(iconv -c -f UTF-16LE -t US-ASCII "$SSH_AGENT_ENV/.ssh/SSH_AUTH_SOCK.env" | tr -d '\r\n')
export SSH_AUTH_SOCK="${AUTH_SOCK/\/tmp/$SSH_AGENT_ENV}"
ssh-add -l > /dev/null
if [ $? = 2 ] ; then
echo "Failed to setup posh-git ssh-agent using $AUTH_SOCK"
unset SSH_AUTH_SOCK
else
echo "Found posh-git ssh-agent $AUTH_SOCK"
fi
else #Start new agent if you want (not shared by posh-git)
echo "failed to setup posh-git ssh-agent"
#eval `ssh-agent -s` > /dev/null
fi
fi

2  Greg Bray  2016-01-23


また、.bash_profileにすぐに入れて、ログオン時にデフォルトのキーを追加するように要求する例もあります。私の場合、転送はオプションではありませんでした

do-ssh-agent() {
# function to start the ssh-agent and store the agent details for later logon
ssh-agent -s > ~/.ssh-agent.conf 2> /dev/null
. ~/.ssh-agent.conf > /dev/null
}

# set time a key should be kept in seconds
keyage=3600

if [ -f ~/.ssh-agent.conf ] ; then
. ~/.ssh-agent.conf > /dev/null
ssh-add -l > /dev/null 2>&1
# $?=0 means the socket is there and it has a key
# $?=1 means the socket is there but contains no key
# $?=2 means the socket is not there or broken
stat=$?
if [ $stat -eq 1 ] ; then
ssh-add -t $keyage > /dev/null 2>&1
elif [ $stat -eq 2 ] ; then
rm -f $SSH_AUTH_SOCK
do-ssh-agent
ssh-add -t $keyage > /dev/null 2>&1
fi
else
do-ssh-agent
ssh-add -t $keyage > /dev/null 2>&1
fi

1  Jorrit Jorritsma  2012-06-12


ファイル ~/ssh-agent.sh を作成します

agent_out_file="$HOME/ssh-agent.out"

function initialize {
pgrep ssh-agent && kill $(pgrep ssh-agent)
ssh-agent -s > $agent_out_file
. $agent_out_file
}

pgrep ssh-agent
if [ $? -eq 0 ]; then # ssh agent running
ssh-add -l > /dev/null 2>&1
status=$?
if [ $status -eq 0 ]; then # can connect to ssh agent and keys available
echo nothing to do
elif [ $status -eq 1 ]; then # can connect to ssh agent and no keys available
echo nothing to do
elif [ $status -eq 2 ]; then # cannot connect to ssh agent
. $agent_out_file
fi
else # ssh agent not running
initialize
fi

ファイルを.bashrcにインクルードします

. ~/ssh-agent.sh

1  raghavan  2015-08-04


これは私が追加したもので、私のために動作します。最初にエージェントが動作しているかどうかをチェックし、動作していれば適切な環境を設定し、動作していなければエージェントを作成します。また、余分なエージェントを作成する必要もありません

自分の.bashrcに入れればいいんだよ

function start_agent() {
killall ssh-agent  2> /dev/null
ssh-agent | sed 's/ Agent pid//' > $SSH_ENV
. $SSH_ENV > $SSH_PID_FILE
ssh-add ~/.ssh/bb_readonly_rsa 2> /dev/null
}

mkdir -p "$HOME/.ssh/agent"
SSH_ENV="$HOME/.ssh/agent/env"
SSH_PID_FILE="$HOME/.ssh/agent/pid"

if [[ -e $SSH_PID_FILE ]]; then
SSH_PID=$(< $SSH_PID_FILE)
PROCESS=$(ps -p $SSH_PID -o comm=)

if [[ $PROCESS == 'ssh-agent' ]]; then
. $SSH_ENV > $SSH_PID_FILE
else
start_agent
fi
else
start_agent
fi

1  Reza Sanaie  2015-09-17


私もこの問題のバリエーションを持っています

# File for storing SSH agent information
OSH=".agent.${HOSTNAME}"

# Test if an agent file exists
if [ -f ${OSH} ];

# We have one, so let's use it
then eval `cat ${OSH}` >/dev/null

else

# No file exists, so we must spawn a new agent
eval `ssh-agent | tee ${OSH}` >/dev/null

fi

# Try to list agent keys
ssh-add -l &>/dev/null

# Determine the agent status
case $? in

# Current and SSH keys installed, nothing to do here
0) ;;

# Current but no SSH keys installed, so we must add them
1) ssh-add ;;

# Stale, so we must redo from scratch with a new agent, then add keys
*) eval `ssh-agent | tee ${OSH}` >/dev/null && ssh-add ;;

esac

このソリューションでは、SSH エージェント情報のコピーをホームディレクトリに保存します。複数のホスト間で共有されているかもしれない NFS 自動マウントされたホームディレクトリを持っている場合、ホスト名はファイル名の一部として使用され、それらを区別するために使用されます

Behaviour:

1) 初めてのユーザーセッションでは、キーパスフレーズの入力を求められます

2) 2番目、3番目、4番目 (など) のセッションでは、最初に追加された SSH エージェントと鍵を継承します

3) エージェントが死亡したりクラッシュしたりした場合、最初のセッションでは新しいエージェントを作成し、エージェントファイルを新しいもので上書きします – そして再び鍵のパスフレーズを要求します。その後に作成されたセッションは、新しい SSH エージェントが実行されている限り、シナリオ 2) と同じように動作します

0  Oliver Jones  2016-08-23


(これは2つ上の投稿を参照しています、コメントを追加できませんでした)

raghavan: あなたの例は有用ですが、持っている2つの行を変更することを提案します

pgrep ssh-agent

to

pgrep -u $USER ssh-agent >/dev/null

これにより、現在のユーザの下で実行されているエージェントのみが検出され、pid が画面にエコーされないようになります (クリーナー)

また、$HOME/ssh-agent.out を $HOME/.ssh-agent.out に変更することもできます

Regards

0  boran  2017-07-05


私はあなたのオリジナルの解決策といくつかの提案を読みましたが、私自身の使用のためにプロセスを単純化することにしました。これは私自身の .bashrc に追加したものです

    # get active ssh-agent, or launch new
SSH_AGENT_PID=$(ps -fC ssh-agent | grep "ssh-agent -a ${HOME}/.ssh/ssh-agent-socket" | awk '{print $2}')
if [ -z "${SSH_AGENT_PID}" ]; then
# If there is no ssh-agent running, we'll make sure one hasn't left a socket file dangling
rm ${HOME}/.ssh/ssh-agent-socket &> /dev/null
# And of course start one
eval $(ssh-agent -a ${HOME}/.ssh/ssh-agent-socket)
else
# We found a process matching our requirements, so sticking with that
export SSH_AGENT_PID
export SSH_AUTH_SOCK="${HOME}/.ssh/ssh-agent-socket"
fi

ここではいくつかの仮定をしてみました

  • ディレクトリに ~/.ssh が存在すること
  • システム上では、ユーザごとに 1 つの ssh-agent ソケットのみを使用します
  • HOME環境変数が設定されていること(なんで設定されていないのかな?
  • プロセスが実行されているが、何らかの理由で指定されたソケットファイルを使用していない状況を手動で処理すること

全体的にはシンプルな解決策のように感じます

0  user946031  2018-09-20


私はしばしば複数のssh-agentプロセスを実行していて、ソケットファイル名の中のPIDが実行中のssh-agentのPIDと実際には一致しないことを発見しました

これは単一の関数で、ユーザ ID があれば Zsh 変数を使用し、find(1) をもう少し制限することで、巨大な /tmp ディレクトリの解析に時間をかけないようにしています

おそらくまだエラーが発生しやすく、複雑ですが、いくつかのざっとしたテストでは、私のユースケースではほとんど動作することがわかりましたので、ここで紹介します

attach_ssh_agent () {
if [ -n "$SSH_AGENT_PID" ]; then
ssh-add -l >/dev/null
ret=$?
if [ $ret -ge 2 ]; then
echo "Agent pid $SSH_AGENT_PID is less than useful (ret=$ret) - killing..."
kill $SSH_AGENT_PID
unset $SSH_AGENT_PID
elif [ $ret = 1 ]; then
echo "Agent pid $SSH_AGENT_PID is less than useful (ret=$ret) - will be seeding it..."
else
echo "Agent pid $SSH_AGENT_PID"
return
fi
fi
if [ -S "$SSH_AUTH_SOCK" ]; then
ssh-add -l > /dev/null
ret=$?
if [ $ret = 2 ]; then
echo "Socket $SSH_AUTH_SOCK is dead - deleting..."
rm -f $SSH_AUTH_SOCK
unset SSH_AUTH_SOCK
elif [ $ret = 1 ]; then
echo "Socket $SSH_AUTH_SOCK points to an agent with no keys..."
ssh-add
else
echo "Found ssh-agent $SSH_AUTH_SOCK (ret=$ret)"
return
fi
fi
for sf in $(find /tmp/ -mindepth 2 -maxdepth 2 -uid ${UID:-$(id -u)} -path '/tmp/ssh-*/agent.*' -type s); do
test -r $sf || continue
export SSH_AUTH_SOCK=$sf
SSH_AGENT_PID=$(basename $SSH_AUTH_SOCK | cut -d. -f2)
# races with other process forks, argh
try=50
while [ $try -gt 0 ]; do
try=$(($try-1))
export SSH_AGENT_PID=$(($SSH_AGENT_PID+1))
echo "Testing $SSH_AUTH_SOCK -> $SSH_AGENT_PID"
ssh_agent_running=$(ps -u $USER | grep ssh-agent)
if [ -z "$ssh_agent_running" ]; then
echo "Socket $SSH_AUTH_SOCK does not contain a link to any running agent - deleting..."
rm -f $SSH_AUTH_SOCK
continue
fi
if echo "$ssh_agent_running" | \
awk '$1 == '$SSH_AGENT_PID' {
found=1;
exit(0);
}
END {
if (!found) {
print "did not find running PID '$SSH_AGENT_PID'";
exit(1);
}
}'; then
ssh-add -l > /dev/null
ret=$?
if [ $ret -ge 2 ]; then
echo "Socket $SSH_AUTH_SOCK does not contain a link to a useful agent at $SSH_AGENT_PID - deleting..."
rm -f $SSH_AUTH_SOCK
kill $SSH_AGENT_PID
unset SSH_AGENT_PID
continue 2
elif [ $ret = 1 ]; then
echo "Socket $SSH_AUTH_SOCK contains a link to a less than useful agent at $SSH_AGENT_PID - seeding..."
ssh-add
if ! ssh-add -l > /dev/null; then
echo "Socket $SSH_AUTH_SOCK still contains a link to a less than useful agent at $SSH_AGENT_PID - aborting."
return
else
break
fi
else
break
fi
else
#        echo "Could not match socket $SSH_AUTH_SOCK to agent PID $SSH_AGENT_PID - skipping..."
continue
fi
done
if [ $try -gt 0 ]; then
echo "Found ssh-agent $SSH_AUTH_SOCK"
echo "Agent pid $SSH_AGENT_PID"
return
fi
done
if [ -n "$try" -a -n "$SSH_AUTH_SOCK" -a -n "$ssh_agent_running" ]; then
echo "We tried many times, but could not match $SSH_AUTH_SOCK to any of the running agents, sigh"
echo "$ssh_agent_running"
echo "Leaving these leftovers behind and starting a new agent..."
fi
eval $(ssh-agent -t 28800)
ssh-add
}

0  Josip Rodin  2016-12-12


ここでは、これについての私のスピンです。私は ‘source‘ 以下の script を私の .bash_profile から取得しました

MYAGENTS=(`pgrep -U $USER -f ^ssh-agent$|sort -n`)

echo "Found ${#MYAGENTS[@]} ssh-agents."

# Let's try to take over the agents, like we do everynight Pinky!
if [[ "${MYAGENTS[@]}" ]];then
KEEPER=${MYAGENTS[0]}
echo KEEPER: $KEEPER
OUTCAST=${MYAGENTS[@]:1}
[[ "$OUTCAST" ]] && { echo "Goodbye agent $OUTCAST"; kill $OUTCAST; }
SSH_AUTH_SOCK=`awk '/tmp\/ssh/ {print $NF}' /proc/$KEEPER/net/unix`
export SSH_AUTH_SOCK;
SSH_AGENT_PID=$KEEPER; export SSH_AGENT_PID;
else
NEWAGENT="`ssh-agent`"
echo $NEWAGENT;
eval $NEWAGENT
fi

ssh-add -l | grep "The agent has no identities" && ssh-add

0  AXE Labs  2019-01-23


常に同じ ssh-agent を再利用したり、 ssh-agent が起動していない場合には ssh-agent を起動したりするシンプルなスクリプトを以下に示します。重要なのは、同じソケット名を使用するために -a オプションを使用することです。そうしないと、デフォルトでは毎回ランダムなソケット名を選択します。この 3 行を 1 行のエイリアスにまとめることも簡単にできます

# set SSH_AUTH_SOCK env var to a fixed value
export SSH_AUTH_SOCK=~/.ssh/ssh-agent.sock

# test whether $SSH_AUTH_SOCK is valid
ssh-add -l 2>/dev/null >/dev/null

# if not valid, then start ssh-agent using $SSH_AUTH_SOCK
[ $? -ge 2 ] && ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null

source

0  wisbucky  2019-08-09


多くの答えのほとんどが有効ですが、私は私の短くて簡単な方法を共有しています。あなたの ~/.bashrc od ~/.zshrc に追加してください。それはいくつかの上位の回答に似ています

# export socket variable
export SSH_AUTH_SOCK=~/.tmp/ssh-agent.sock
[ ! -d ~/.tmp ] && mkdir ~/.tmp # create dir if not exist ~/.tmp

# check is ssh-agent running and socket is valid
check-ssh-agent() {
[ -S "$SSH_AUTH_SOCK" ] && { ssh-add -l >& /dev/null || [ $? -ne 2 ]; }
}

# if socket or agent is not valid/running create ssh-agent with socket from env variable
check-ssh-agent || eval "$(ssh-agent -s -a ${SSH_AUTH_SOCK})"

この行で ~/.ssh/config からすべての鍵を追加することができます

cat ~/.ssh/config | grep IdentityFile | awk '{print $NF}' | sort | uniq | xargs ssh-add

ssh-agent コードを ~/.bashrc または ~/.zshrc に追加するか、エイリアスとして追加することができます

alias ssh-add-keys="cat ~/.ssh/config | grep IdentityFile | awk '{print $NF}' | sort | uniq | xargs ssh-add"

0  LukasZZ  2020-02-23


スポンサーリンク
シェアする
TwitterFacebookはてブPocketLINEPinterestLinkedInコピー
adminをフォローする
code-404.net
code-404.net

関連記事

hosts

ssh – known_hosts から鍵を削除する

私はここ数週間の間にいくつかの仮想マシンを構築しました。問題は、.ssh/known_hostsでMan in the middleの警告が表示されることです。これは、別のフィンガープリントが仮想マシンのIPに関連付けられているために発生し...
remote

script – SSH: sudoコマンドを実行

私は、ある場所で別のマシン(Ubuntuベース)にsshして、rootとして何かを実行する必要があるインタラクティブなシェルスクリプトを持っています(ユーザーは彼のパスワードを入力する必要がありますが、リモートコマンドはスクリプトに記載され...
linux

linux – NFS マウントポイントにマウントされた sshfs を (きれいに) ディスマウントするには?

私の同僚はデスクトップコンピュータを持っていて、ファイルサーバ上で/homeを共有しています。私のラップトップでは問題なく動作するsshfsの特定のディレクトリを別のSSHホストにマウントするためのPerlスクリプトを開発しました 彼のコン...
bash

Windows 10でBash on Ubuntu」にSSHするにはどうすればいいですか?

私はWindows 10 Anniversary Editionに「Bash on Ubuntu on Windows」をインストールして動作させています。このUbuntuインスタンスにSSHできるようにしたいのですが、openssh-se...
linux

linux – ssh セッション内で scp を使わずにファイルをコピーするには?

あるシステムにsshでログインしたのですが、両方のシステムにscpが存在しません。scpプログラムを使わずにファイルをコピーする方法   67  Talespin_Kit  2011-06-01 ベストアンサー ファイルを送信すること c...
gnome-terminal

GNOMEターミナルのssh接続のタイムアウトとフリーズを回避する方法

ssh経由で特定のサーバに接続すると、タイムアウトして端末が「フリーズ」してしまいます(入力を受け付けず、切断もできず、Ctrl-Cでsshプロセスを終了させることもできません) これはUbuntuのgnome-terminalにありますが...
スポンサーリンク
docker で http://deb.debian.org/debian/dists/jessie-updates/InRelease を取得する際の問題
Sambaを使用して、VirtualBoxでLinuxゲストからWindowsホストとフォルダを共有する
スポンサーリンク

関連記事

ssh – Linux.ファイルを継続的に同期させる、一方通行
2020.10.292020.11.08
SSHトンネルを介したUDPトラフィック
2020.11.08
linux – NATルータの後ろにあるオフィスホストへのSSHアクセス
2020.10.282020.11.07
暗号 – ssh-keygen によって生成される randomart とは何ですか?
2020.10.272020.11.07
ssh – Linux で .ppk 鍵を OpenSSH 鍵に変換する方法は?
2020.10.272020.11.07
linux – ユーザーを強制的にログアウトする
2020.10.282020.11.07
debian – ssh_config に設定された SendEnv 変数を ~/.ssh/config から無効にする方法
2020.10.282020.11.07
セキュリティ – ログインやパスワードなどの緊急アクセスを妻に与えるには?
2020.10.272020.11.07
authentication – ssh -o PreferredAuthenticationsを実行します。password」と「keyboard-interactive」の違いは何ですか?
2020.10.292020.11.08
gnupg – GPG と SSH 鍵は互換性があるのか?
2020.10.292020.11.08
スポンサーリンク

便利情報ピックアップ

  • お問い合わせ
  • サイトマップ
  • プライバシーポリシー
  • 運営者情報
code-404.net
Content dated before 2011-04-08 (UTC) is licensed under CC BY-SA 2.5. Content dated from 2011-04-08 up to but not including 2018-05-02 (UTC) is licensed under CC BY-SA 3.0. Content dated on or after 2018-05-02 (UTC) is licensed under CC BY-SA 4.0.