SCOPE_IDENTITY() does not work across linked servers, at least not with 4 part names via INSERT.
You could rewrite this as a stored procedure that exists on the linked server, and have the procedure provide the new value as a RETURN variable, or as an OUTPUT variable. Example:
:connect TestServer2
USE DavesDB
GO
CREATE PROCDURE dbo.Insert_employee @title varchar(128), @fname varchar(128), @lname varchar(128) AS
SET NOCOUNT ON
DECLARE @id int
INSERT INTO dbo.Employees( Emp_Title, Emp_FName, Emp_LName)
VALUES(@title,@fname,@lname)
SET @id=SCOPE_IDENTITY()
RETURN @id
GO
:connect OtherServer
DECLARE @ID INT = 1010, @NEW_ID INT
DECLARE @title varchar(128), @fname varchar(128), @lname varchar(128)
SELECT
@title=Emp_Title, @fname=Emp_FName, @lname=Emp_LName
FROM Employees
WHERE Emp_ID = @ID
EXEC @NEW_ID=TestServer2.DavesDB.dbo.Insert_employee @title=@title, @fname=@fname, @lname=@lname
SELECT @NEW_ID
Note that the :connect directive is only valid if you run this in SQLCMD mode in SSMS. Otherwise you'd connect the query window to the appropriate server name and run each section independently.
If you need to get a non-integer value, an OUTPUT variable would be the only choice: