From 8d96b960e472433d2b4a5b71df7000bf1fbde648 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Apr 2014 18:58:10 -0400
Subject: [PATCH] Track the SSH public key used for a session and add a `keys which` command

---
 src/main/java/com/gitblit/transport/ssh/WelcomeShell.java |   26 ++++++++++++++++----------
 1 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java b/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java
index a9fe6f0..bcf30c2 100644
--- a/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java
+++ b/src/main/java/com/gitblit/transport/ssh/WelcomeShell.java
@@ -134,8 +134,10 @@
 			msg.append(user.getDisplayName());
 			msg.append(", you have successfully connected over SSH.");
 			msg.append(nl);
+			msg.append(" Interactive shells are disabled.");
 			msg.append(nl);
-			msg.append("   client: ");
+			msg.append(nl);
+			msg.append("   client:   ");
 			msg.append(session.getClientVersion());
 			msg.append(nl);
 			msg.append(nl);
@@ -156,17 +158,21 @@
 			msg.append(nl);
 			msg.append(nl);
 
-			msg.append(" You may upload an SSH public key with the following syntax:");
-			msg.append(nl);
-			msg.append(nl);
+			if (client.getKey() == null) {
+				// user has authenticated with a password
+				// display add public key instructions
+				msg.append(" You may upload an SSH public key with the following syntax:");
+				msg.append(nl);
+				msg.append(nl);
 
-			msg.append(String.format("   cat ~/.ssh/id_rsa.pub | ssh -l %s -p %d %s gitblit keys add -", user.username, port, hostname));
-			msg.append(nl);
-			msg.append(nl);
+				msg.append(String.format("   cat ~/.ssh/id_rsa.pub | ssh -l %s -p %d %s gitblit keys add -", user.username, port, hostname));
+				msg.append(nl);
+				msg.append(nl);
 
-			msg.append(b2);
-			msg.append(nl);
-			msg.append(nl);
+				msg.append(b2);
+				msg.append(nl);
+				msg.append(nl);
+			}
 
 			// display the core commands
 			SshCommandFactory cmdFactory = (SshCommandFactory) session.getFactoryManager().getCommandFactory();

--
Gitblit v1.9.1