web-dev-qa-db-ja.com

ユーザーがsftp経由でログインしているかどうかを確認するにはどうすればよいですか?

私は自分のオフィスでLinuxファイルサーバーを実行しており、リモートパートナーがログインしてファイルをダウンロードするためにSFTPを使用しています。マシンのメンテナンスを安全に実行できる時期を知ることができるように、アクティブな接続またはログインがあるかどうかを確認する方法はありますか?

マシンはほぼ常に大きなファイルを処理しているため、誰かがアップロードしたために、スケジュールされたメンテナンスが頻繁に中断されます

11
aVeRTRAC

あなたも行うことができます:

ps -ef | grep '[s]shd' | grep -v ^root

sshdセッションが表示されます(sftpに使用されます)。私のマシンでは、sshdプロセスのコマンドラインに '$ USER @ notty'が含まれていることに気づきました。これは、ターミナルセッションでログインしていないためです。あなたは上記のgrepを次のように締めることができます:

ps -ef | grep '[s]shd:.*@notty' | grep -v ^root

BTW: grep内の角括弧は、「grep sshd」プロセスがプロセスリストに表示されないようにします。 [s] shdはsshdと一致しますが、それ自体とは一致しません。 「grep -v grep」を保存します

11
Rich Homolka

fuser -u ssh/tcp

2
Uli

コマンドラインプログラムwhoを使用してこれを確認できると思います。機能しないという報告に気づきましたが、それでも機能する可能性があると思います(おそらくssh設定です)。

sftpはSSHの上に構築されます 。 「SSHファイル転送プロトコル」の略です。また、sshを介してログインしている場合、「who」には、ログインしたユーザーとしての出力が含まれます。したがって、これがアクティブなsftpセッションでも機能することを期待しています。

この 2008年からのディスカッション は、これに 'netstat'を使用できることも示唆しています。また、何もせずに更新を確認できるように、「watch」を介して「who」を実行するための提案も含まれています。

1
James T Snell